【问题标题】:how can i initialize an object我怎样才能初始化一个对象
【发布时间】:2017-01-26 19:06:26
【问题描述】:

重点是用值“beep”初始化一个指向 Mystic 对象的指针有什么想法吗?

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);
} 

【问题讨论】:

  • 由于这个关于混淆指针和引用的问题,并显示了一些反模式,最好用一本好的 C++ 书来回答。也许你应该看看C++ recommended book list

标签: c++ object initialization


【解决方案1】:

接受字符串的构造函数是不公开的,所以你不能使用它。而是使用默认构造函数,然后使用 setLabel 方法。

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

【讨论】:

    【解决方案2】:

    你试图使用私有的构造函数,而你只能访问公共的,所以你必须将该构造函数设为公开,或者如果你想使用公共默认构造函数并初始化默认值Mystic() : label("default"){}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-07
      • 1970-01-01
      相关资源
      最近更新 更多