2012-07-29 119 views
-1

我有一個單身人士班,我需要一個私人會員。我希望該成員是空的,直到我使用我的setter方法來設置正確的數據。私人會員單身人士班

class PlaybackHelper{ 
private: 
    PlaybackHelper(); 
    PlaybackHelper(PlaybackHelper const&); 
    void operator=(PlaybackHelper const&); 

    playback_type type; 

    Note note; 
public: 
    void setPlaybackType(playback_type aType); 
    static PlaybackHelper &getInstance(); 

}; 

Xcode是給我的錯誤我在執行文件(其中我執行我的私有構造)說我應該初始化我的會員:

PlaybackHelper::PlaybackHelper(){ 

} 

error: Semantic Issue: Constructor for 'PlaybackHelper' must explicitly initialize the member 'note' which does not have a default constructor

我不不知道爲什麼我無法做到這一點(尤其是因爲它不會給我任何錯誤的playback_type type;(枚舉)成員以相同的方式工作)任何想法我可以做什麼來讓我的註釋成員爲空,直到我準備好了爲其分配一個值?

+0

對象類型節點沒有默認的構造函數,它讀取錯誤文本後顯然。不是嗎? – Torsten 2012-07-29 17:11:24

回答

3

playback_type是一個普通的舊數據,因此缺乏初始化type只是將它保留爲未初始化;但是,定義了class Note的非默認構造函數,因此如果未定義它,則其默認構造函數將不會自動生成。 爲了解決它,你既可以

  1. 用的參數由您定義的非默認的構造函數(的一個)初始化。

    PlaybackHelper::PlaybackHelper() : note(/*...*/) { }

  2. 定義默認構造class Note

2

錯誤消息很明顯 - 沒有默認構造函數Note。要麼創建一個,要麼在初始化器列表中用現有的構造函數初始化Note

我希望該成員是空的,直到我使用我的setter方法來設置正確的數據。

你不行。當你創建你的對象時,noteplayback_type都存在。

0

由於Note沒有默認構造函數(即無參數構造函數),你必須初始化它的成員初始化列表如下:

PlaybackHelper::PlaybackHelper() : note(/*..args...*/) 
{        //^^^^^^^^^^^^^^^^^^^^member initialization 

} 

傳遞適當的參數(或多個)note所要求的Note構造函數。你必須這樣做,對於其他構造函數PlaybackHelper