【发布时间】:2013-12-03 21:12:40
【问题描述】:
虽然我在这个网站上尝试了多次搜索,但我没有找到正确的答案。我再次提出这个问题。
通常,静态对象成员应该在源文件中初始化。
//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?
【问题讨论】:
-
private: B() public: B(int argc, char** argv) 有什么问题? (PS:避免指针)
-
@DieterLücking。 private: B() 的原因是我们不想创建 B 变量。例如,单例。
标签: c++ object static initialization member