簡體   English   中英

如何在C ++中的類中使用運算符重載函數?

[英]How can I use operator overloading function with a class in C++?

我在一個類中做了一個運算符重載函數。 我創建了另一個函數,該函數可以調用類中的重載函數。

我想使用在主函數中調用操作重載函數的函數,所以我在主函數中這樣寫:

#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上了解有關運算符重載的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM