【问题标题】:Private variable needs to be initialized only in constructor. How?私有变量只需要在构造函数中初始化。如何?
【发布时间】:2011-03-18 02:41:17
【问题描述】:

我有一个名为 Foo 的类,其构造函数需要参数,另一个类 Bar 具有 Foo 私有变量

 class Foo 
 {
      public:
      Foo(string);
 }

 class Bar
 {
      public:
      Bar() { this->foo = Foo("test") }

      private:
      Foo foo;
 }

但是,当我尝试编译它时,我收到一个编译错误,即没有 Foo::Foo() 构造函数。看起来 Bar 类中的私有变量 foo 在构造函数中分配值之前已被初始化。

我怎样才能有一个私有的 foo 变量等待在我的构造函数中被初始化?

【问题讨论】:

    标签: c++ variables constructor private


    【解决方案1】:

    使用初始化列表:

    Bar() : foo("test") {}
    

    顺便说一句,在 C++ 中使用 this-> 的原因很少见(并且通常表示其他问题)。

    【讨论】:

    • 好的,是的,我来自 java,C#,刚开始尝试一些 c++。因此我的 this-> 用法。 :)
    【解决方案2】:

    您需要使用初始化列表。如果不这样做,您的代码将调用该对象的默认构造函数。

    Bar::Bar() : foo("test") {
       // stuff
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-27
      • 2015-02-19
      • 1970-01-01
      • 2016-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-12
      相关资源
      最近更新 更多