【发布时间】:2018-10-06 01:28:06
【问题描述】:
是否可以使用自己的方法初始化静态成员,例如。初始化()?
例子:
class Foo
{
//some private variables
public:
static Bar example;
//some methods
}
然后在 main.cpp 中像这样调用它:
Foo::example.initialize(argument);
当然不行。它也缺乏封装,因为变量是公共的。我希望它是私有的并且只初始化一次。除了用方法初始化它,我别无选择。
【问题讨论】:
-
定义“不起作用”。你期待什么结果,你观察到了什么?从表面上看,我看不出它会成为问题的原因。如果您想将
example设为私有,请在Foo上定义一个静态方法,该方法会转身并调用example.initialize() -
我在 main.cpp 中得到“未定义的对 `Foo::example' 的引用”。
-
这是一个单独的问题。您只声明了
example- 您还需要定义它。在一些.cpp(不是.h)文件中,写Bar Foo::example; -
哦,这就是它不起作用的原因。静态方法提示也非常有帮助。谢谢。
-
imho 封装和 public 是正交的,但我知道我对封装有一些粗略的看法;)
标签: c++ oop methods static initialization