2017-01-26 4 views
0

ポイントは"ビープ音"の値を持つミスティックオブジェクトへのポインタを初期化する何か考えですか?どのように私はオブジェクトを初期化することができます

class Mystic { 
private: 
string label; 
Mystic(string & newlbl) { setLabel (newlbl)}; 
public: 
void setLabel(string newlbl){label = newlbl;} 
Mystic() : label(){}; 
}; 
int main(int argc, char *argv[]) 
{ 
... //i tried this 
     //string *p1 = new string("beep"); 
     //Mystic myst(p1); 
} 
+0

を使用すると、そのコンストラクタを公開をしなければならないので、あなただけの、公共の1にアクセスすることができ、またはパブリックデフォルトコンストラクタを使用したい場合は、デフォルト値を初期化しますポインタと参照を混乱させ、いくつかのアンチパターンを表示するこの質問以来、良いC++の本で最もよく答えるかもしれません。おそらくあなたは[C++推奨のブックリスト](http://stackoverflow.com/questions/388242/)を見てみるべきです。 – jaggedSpire

答えて

1

文字列を受け取るコンストラクタはパブリックではないため、使用できません。代わりに、デフォルトのコンストラクターを使用してからsetLabelメソッドを使用します。

int main(int argc, char** argv) { 
    Mystic m; 
    m.setLabel("beep"); 
    Mystic* p = &m; 
} 
0

コンストラクタあなたは、その秘密を使用しよう、とMystic() : label("default"){}

関連する問題