[英]Private member for singleton class
我有一個單例課程,需要一個私人成員。 在我使用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;
任何錯誤playback_type type;
(枚舉)成員以相同的方式工作)任何想法都可以使我的Note成員為空直到我准備為其分配值?
錯誤消息很清楚-沒有默認的Note
構造函數。 創建一個,或使用現有構造函數在初始值設定項列表中初始化Note
。
在我使用setter方法設置正確的數據之前,我希望該成員為空。
你不能 創建對象時, note
和playback_type
存在。
playback_type
是一個普通的舊數據,因此缺少初始化type
只會將其保留為未初始化狀態。 但是,由於定義了class Note
的非默認構造函數,因此,如果未定義它,則不會自動生成其默認構造函數。 要解決它,您可以
使用您定義的非默認構造函數之一的參數對其進行初始化。
PlaybackHelper::PlaybackHelper() : note(/*...*/) { }
定義class Note
的默認構造函數class Note
由於Note
沒有默認構造函數(即無參數構造函數),因此必須在成員初始化列表中將其初始化為:
PlaybackHelper::PlaybackHelper() : note(/*..args...*/)
{ //^^^^^^^^^^^^^^^^^^^^member initialization
}
根據Note
構造函數的要求將適當的參數傳遞給note
。 對於PlaybackHelper
的其他構造函數,您必須執行相同的操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.