簡體   English   中英

單身人士班的私人會員

[英]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方法設置正確的數據之前,我希望該成員為空。

你不能 創建對象時, noteplayback_type存在。

playback_type是一個普通的舊數據,因此缺少初始化type只會將其保留為未初始化狀態。 但是,由於定義了class Note的非默認構造函數,因此,如果未定義它,則不會自動生成其默認構造函數。 要解決它,您可以

  1. 使用您定義的非默認構造函數之一的參數對其進行初始化。

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

  2. 定義class Note的默認構造函數class Note

由於Note沒有默認構造函數(即無參數構造函數),因此必須在成員初始化列表中將其初始化為:

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

}

根據Note構造函數的要求將適當的參數傳遞給note 對於PlaybackHelper的其他構造函數,您必須執行相同的操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM