运算符重载+;为了求两个对象的和 我是C++中的新手,我想通过操作符重载来总结两个对象,但是问题是程序运行时我的程序崩溃了,我不知道我需要解决的问题是如何编译好我的代码。
主要 Personnage.cpp运算符重载+;为了求两个对象的和 我是C++中的新手,我想通过操作符重载来总结两个对象,但是问题是程序运行时我的程序崩溃了,我不知道我需要解决的问题是如何编译好我的代码。,c++,operator-overloading,C++,Operator Overloading,主要 Personnage.cpp #include "Personnage.h" #include <string> Personnage::Personnage() : power(0) { } Personnage::Personnage(int force) : power(force) { } Personnage operator+(Personnage const& first, Personnage const& second) { Pe
#include "Personnage.h"
#include <string>
Personnage::Personnage() : power(0)
{
}
Personnage::Personnage(int force) : power(force)
{
}
Personnage operator+(Personnage const& first, Personnage const& second)
{
Personnage resultat;
resultat = first + second;
return resultat;
}
#包括“Personnage.h”
#包括
Personnage::Personnage():电源(0)
{
}
Personnage::Personnage(intforce):power(force)
{
}
Personnage运算符+(Personnage常量&第一,Personnage常量&第二)
{
人员管理结果;
结果=第一次+第二次;
返回结果;
}
谢谢你的帮助 问题是你的接线员在无休止地呼叫自己。本声明:
resultat = first + second;
…调用运算符,然后运算符再次执行该语句,等等。最终会出现堆栈溢出
您的操作符+
需要决定将两个Personnage添加到一起在语义上意味着什么。比如说
Personnage operator+(Personnage const& first, Personnage const& second)
{
int total_power = first.power + second.power;
return Personnage(total_power);
}
要访问私有成员,通常可以在类中将重载运算符声明为friend
class Personnage
{
public:
Personnage();
Personnage(int force);
friend Personnage operator+(Personnage const& first, Personnage const& second);
private:
int power;
};
换成
friend Personnage operator+(Personnage const& first, Personnage const& second)
{
Personnage resultat;
resultat.power = first.power + second.power;
return resultat;
}
或
或
在.h文件中也声明为friend
都是一样的,只是对不同类型的构造函数调用不同。你调试过吗?这不起作用,因为变量幂是私有的,运算符在类之外,然后将运算符放在类内部,因为我的答案与你的答案几乎相同(但没有更新以处理朋友问题),我只是把不同的部分加在上面。
class Personnage
{
public:
Personnage();
Personnage(int force);
friend Personnage operator+(Personnage const& first, Personnage const& second);
private:
int power;
};
friend Personnage operator+(Personnage const& first, Personnage const& second)
{
Personnage resultat;
resultat.power = first.power + second.power;
return resultat;
}
friend Personnage operator+(Personnage const& first, Personnage const& second)
{
Personnage resultat(first.power + second.power);
return resultat;
}
friend Personnage operator+(Personnage const& first, Personnage const& second)
{
return (Personnage resultat(first.power + second.power));
}