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

标签 c++ class operator-overloading operators overloading

我在一个类中做了一个运算符重载函数。 我做了另一个函数来调用类中的重载函数。

我想在主函数中使用调用操作重载函数的函数,所以我在主函数中这样写:

#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/

相关文章:

c++ - 如何将类成员函数传递给第 3 方库中的方法?

c++ - 这个 bool 运算符在 C++ 中实际上做了什么?这个奇怪的东西有什么用?

c++ - find() 使用重载运算符==

c++ - 在 operator delete[] 中取消析构函数调用

c++ - qt中如何播放视频文件

c++ - boolean 值对位域的优势

c++ - 将传递的 ofstream 设置为类范围的变量

java - 如何计算同一类的两个对象?

c++ - 在 DEBUG 模式下调整字节字段大小时发生访问冲突

c++ - 不确定 Typedef 和类的位置