说我有一个班级
class var1
{
int a;
int b;
}
var1 var1::operator+(var1 passed)
{
var1 Result;
Result.a = a + passed.a;
Result.b = b + passed.b;
return Result;
}
现在我可以在Main中进行简单的重载。但是我如何在另一个班级重载。
class var2
{
public:
var1 res;
var1 res2;
}
void var2::add()
{
var1 temp;
temp = res + res2;
}
答案 0 :(得分:1)
要提供有关您可能尝试执行的操作的更多信息,请参阅以下示例:
class var1
{
int a, b;
public:
var1 operator+( const var1& rhs )
{
var1 output;
output.a = this->a + rhs.a;
output.b = this->b + rhs.b;
return output;
}
};
class var2
{
var1 res1, res2;
public:
var2 operator+( const var2& rhs )
{
var2 output;
output.res1 = this->res1 + rhs.res1;
output.res2 = this->res2 + rhs.res2;
return output;
}
};
这不是重载,但根据您的代码,似乎这可能是您要完成的任务。如果您在问题中添加更多细节,我可以根据您的需求更好地定制答案。
为了解释这个例子,因为在var1中定义了加法运算符,它可以用来对var2的各个字段求和。通过在var2上定义自己的加法运算符,您可以使用var1中定义的运算符来执行部分的逻辑求和并返回结果。这是不重载或覆盖任何内容,因为这两个类彼此没有关系。
有关C ++中运算符重载的更多信息,请read this on SO。