我在一个类中创建了一个运算符重载函数。 我创建了另一个函数来回忆类中的重载函数。
我想在main函数中使用调用操作重载函数的函数,所以我在main函数中这样写了:
#include <iostream>
...
class Zealot {
int x;
....
void operator++() {
Zealot s;
s.x = -50;
for (auto i = 0; i < 2; ++i, tail.push_back(s));
}
void Collision() {
...
(*this)++; // Error : C2676
...
}
...
};
Zealot z;
int main() {
z.Coliision();
}
我收到错误C2676所以我无法编译源代码。
我该怎么做才能做好? 我需要你的帮助。
答案 0 :(得分:1)
你重载的是预增量运算符 你正在使用的是后增量算子。
您可以使用预增量运算符:
++(*this);
或实现后增量操作符:
void operator++(int) { ... }
要成为惯用语,您应该更改这些函数的返回值。
Zealot& operator++() { ... }
Zealot operator++(int) { ... }
您可以在http://en.cppreference.com/w/cpp/language/operators了解有关运算符重载的更多信息。