如何在C ++中使用运算符重载函数?

时间:2017-05-13 05:22:39

标签: c++ class operator-overloading operators overloading

我在一个类中创建了一个运算符重载函数。 我创建了另一个函数来回忆类中的重载函数。

我想在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所以我无法编译源代码。

我该怎么做才能做好? 我需要你的帮助。

1 个答案:

答案 0 :(得分:1)

你重载的是预增量运算符 你正在使用的是后增量算子。

您可以使用预增量运算符:

++(*this);

或实现后增量操作符:

void operator++(int) { ... }

要成为惯用语,您应该更改这些函数的返回值。

Zealot& operator++() { ... }
Zealot operator++(int) { ... }

您可以在http://en.cppreference.com/w/cpp/language/operators了解有关运算符重载的更多信息。