繁体   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