我在一个类中做了一个运算符重载函数。 我做了另一个函数来调用类中的重载函数。
我想在主函数中使用调用操作重载函数的函数,所以我在主函数中这样写:
#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,因此无法编译源代码。
我应该怎么做才能让它发挥作用? 我需要你的大力帮助。
最佳答案
你重载的是前置自增运算符。
您使用的是后增量运算符。
您可以使用预递增运算符:
++(*this);
或者实现一个后增量运算符:
void operator++(int) { ... }
为了符合习惯,您应该更改这些函数的返回值。
Zealot& operator++() { ... }
Zealot operator++(int) { ... }
您可以在 http://en.cppreference.com/w/cpp/language/operators 阅读更多关于运算符重载的信息.
关于c++ - 如何在 C++ 中对类使用运算符重载函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43949517/