2011-04-10 73 views
0

例子:如何將一個對象的某個值賦給一個長變量?

long a; 
BoundedCounter e; 

所以我想在班上分配私有變量計數器的值的。

a=e; 

使用這種嘗試:

long int & operator=(long b) 
{ 
    b=counter; 
    return b; 
} 

long int & operator=(long b, BoundedCounter &a) 
{ 
    b=a.getCounter(); 
    return b; 
} 

它會返回一個編譯錯誤:

cannot convert BoundedCounter' to long int' in assignment

`long int& operator=(long int, BoundedCounter&)' must be a nonstatic member function

如何定義一個operator =在類左邊是一個普通變量而不是對象的情況下工作的類之外?

回答

2

operator=在這裏是不合適的,因爲賦值的左邊是原始類型(並且不能爲原始類型定義operator=)。嘗試給BoundedCounteroperator long,如:

class BoundedCounter { 
private: 
    long a_long_number; 
public: 
    operator long() const { 
     return a_long_number; 
    } 
}; 

分配:

class BoundedCounter 
{ 
public: 
    // ... 
    operator long() const 
    { 
     return counter; 
     // or return getCounter(); 
    } 
}; 
+0

工作!非常感謝 :) – alabroski 2011-04-10 22:23:18

1

你的代碼是從一個BoundedCounterlong所以你需要定義轉換(CAST)運營商從BoundedCounterlong轉換您定義的運算符將允許您將long值分配給BoundedCounter類的實例,這與您嘗試執行的操作相反。

相關問題