我无法调用对我的两个包装器对象求和的重载+运算符。
Vector.cpp的代码:
//Overload operators
Vector operator + (const Vector & lhc, const Vector& rhc)
{
long shorterLength;
if(lhc.numberOfElements > rhc.numberOfElements)
{
shorterLength = rhc.numberOfElements;
}
else
{
shorterLength = lhc.numberOfElements;
}
//Vector *vector = new Vector(shorterLength, true);
Vector vector;
for(int i = 0; i<shorterLength; i++)
{
vector.container.push_back(lhc.container[i]+ rhc.container[i]);
}
return vector;
}
在Vector.h中
Vector(long numerOfElements, bool isEmpty);
Vector();
~Vector();
Vector operator + (const Vector& rhc);
在main.cpp中。我无法在我的Vector实例上调用+运算符,将“无效运算符转换为二进制表达式Vector * Vector *”错误。
Vector *a = new Vector(10, false);
a->displayElements();
Vector *b = new Vector(5, false);
b->displayElements();
Vector c;
//c = a + b
//If I comment this out I get c = a + b;
// Invalid operator to binary expression Vector * Vector *
答案 0 :(得分:4)
您正在尝试添加两个指针。如果你真的想因为某种原因想要使用new
,那么你需要取消引用指针
c = *a + *b;
但你几乎肯定会更好地使用对象
Vector a(10, false);
Vector b(5, false);
Vector c = a + b;
然后决定重载运算符应该是成员(当你声明它)还是非成员(如你定义的那样),并使声明和定义匹配。
答案 1 :(得分:1)
首先,您有两个operator+
重载。
其次,您在指针上使用operator+
,并且无法添加指针。
c = a + b; <<<< Adding pointers doesn't make sense.
您可以执行以下操作: -
Vector a(10, false);
Vector b((5, false);
Vector c = a + b;