2015-06-28 67 views
-3

我面對的運算符重載的一個問題,當我編譯我的程序它給了我一個錯誤,下面是代碼:爲什麼我的編譯器給出錯誤,當我重載增量運算

class box 
{ 
    int length; 
    int width; 
    int volume; 
public: 
    box():length(50),width(30) 
    { 

    } 

    box& operator++() 
    { 
     volume++; 
     width++; 
     length++; 
    } 
}; 

int main() 
{ 
    box b1; 

    cout<<++b1; 
} 

錯誤它給了我是:

「敵不過運營商< <」

我的問題是,爲什麼編譯器給我一個錯誤althou我的語法看起來不錯?

+5

爲什麼你的問題標籤爲C#? –

+2

如果您認爲它與增量運算符有關,請將其刪除並查看會發生什麼。 – juanchopanza

+2

提示:編寫一個操作符與編寫所有操作符不一樣。 – jaggedSpire

回答

2

兩個問題:

  1. 返回*這從您的重載運算符。

  2. 如果要使用「cout < <」打印對象,則需要超載運算符< <,否則需要單獨打印每個成員。

+0

class box { \t int length; \t int width; \t int volume; \t公共: \t \t盒():長度(50),寬度(30) \t \t { \t \t \t \t \t} \t \t INT&運算+(框&V) \t \t { \t \t \t v .volume = v.width +長度; \t \t \t \t \t \t \t } \t \t \t }; int main() { \t box b1,b2; cout << b1 + b2 << endl; \t \t}請檢查這種情況下,我不重載<<運營商,但我的代碼工作正常 – jawad

相關問題