[英]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.