2016-07-06 71 views
-1

我有一個類CompNum,我需要他與的值初始化專用靜態的Crry變量0(可變必須是私有)。錯誤:預期構造,析構函數,或類型轉換之前「=」令牌

因此,我做了一個公共函數,返回crry變量的引用,以便能夠使用carry()函數更改該變量。

class CompNum { 
private: 
    typedef char littlenum; 
    static littlenum crry; 
    ... 
public: 
    static littlenum& carry() { /*Do something with crry*/ return crry; } 
    ... 
}; 

CompNum::carry() = 0; 

編譯這一點,它拋出這個錯誤:

error: expected constructor, destructor, or type conversion before '=' token 

在行:

CompNum::carry() = 0; 

目標:

這裏的目標是能夠改變crry變量,但每次我想改變它時,都需要先做一些事情,所以做CompNum::crry = 123不是一個解決方案,這就是爲什麼我認爲我需要一個公共方法來實現這一點。

+0

您的意思是寫'littlenum CompNum ::進位(){回報0; }'? –

+0

該行意在處理'carry'函數還是'crry'數據記憶? –

+0

@JamesAdkison與crry數據成員 – Garmekain

回答

2

當您聲明static成員變量時,您實際上只是指定它存在,但不爲其創建存儲。你需要 「確定」 它的類外:

CompNum::littlenum CompNum::crry; 

全碼:

class CompNum { 
private: 
    typedef char littlenum; 
    static littlenum crry; 
public: 
    static littlenum& carry() { /*Do something with crry*/ return crry; } 
}; 
CompNum::littlenum CompNum::crry; 

int main() 
{ 
    CompNum::carry() = 0; 
} 

Live on Coliru

相關問題