【发布时间】:2017-10-23 08:30:24
【问题描述】:
我创建了一个带有静态字段的基本 IBasic 接口
class IBasic
{
public:
IBasic();
virtual ~IBasic();
static std::vector< std::vector<char> > Field;
};
继承自Inherit类:
class Inherit : public IBasic
{
public:
Inherit(int);
~Inherit();
void Foo();
};
Inherit 类在构造函数/或成员函数中使用 Field 静态成员进行一些操作。 为了创建 Inherit 类的实例,我们需要在 main.cpp 中的 main 函数之前显式声明一个静态字段:
#include "Basic.h"
#include "Inherit.h"
std::vector< std::vector<char> > IBasic::Field;
int main()
{
Inherit(10);
return 0;
}
问题是:
- 静态方法实际存在于哪个命名空间中(全局?)?因为我知道静态字段/函数实际上不是类成员。
- 是否有其他方式来声明此静态方法,例如,在 class 文件,在 main 函数中,还是通过创建未命名的命名空间?它只有一个正确的变体吗?
- 如何正确?首先应该考虑什么?
【问题讨论】:
-
1.在类名命名空间中。 2. 您可以在任何.cpp 文件中声明静态。 3. 我认为最好在 Basic.cpp 中声明静态。
-
@Unick Answers go down there vvvvvvvvvv
-
你的代码中没有静态方法
标签: c++ c++11 inheritance static-members