使用类中的参数初始化静态对象成员

时间:2013-12-03 21:12:41

标签: c++ object static initialization member

虽然我在这个网站上尝试了多次搜索,但我找不到正确答案。我再次提出这个问题。

通常,应在源文件中初始化静态对象成员。

//header file
class A{ 
private: 
   static B*  bPoint ;

public: 
    static void init(int argc, char** argv);
  ... 
};

//Source file: 
B A::bPoint = new B()              //Normally, this should OK. 

但问题是默认B构造是私有的,现在我必须使用另一个公共构造

 B(int argc, char** argv); 

在这种情况下,   new B()会发出编译错误.. 那么如何在A类中初始化静态bPoint?

1 个答案:

答案 0 :(得分:0)

应该在源文件中定义静态成员,但请注意,您可以先使用空指针初始化它:

// source file:
B* A::bPoint;  // note the pointer to B

然后,如果您的问题是将A::init()的参数转发给B()的构造函数,则可以在bPoint内为A::init()分配一个对象:

A::init(int argc, char** argv)
{
    bPoint = new B(argc, argv);
}