运算符重载+;为了求两个对象的和 我是C++中的新手,我想通过操作符重载来总结两个对象,但是问题是程序运行时我的程序崩溃了,我不知道我需要解决的问题是如何编译好我的代码。

运算符重载+;为了求两个对象的和 我是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

主要

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)
{
    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));
}