2012-07-29 92 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