Ant*_*ton 0 c++ inheritance static-members c++11
我创建了一个带有静态字段的基本IBasic接口
class IBasic
{
public:
IBasic();
virtual ~IBasic();
static std::vector< std::vector<char> > Field;
};
Run Code Online (Sandbox Code Playgroud)
从哪个继承类继承:
class Inherit : public IBasic
{
public:
Inherit(int);
~Inherit();
void Foo();
};
Run Code Online (Sandbox Code Playgroud)
Inherit类使用构造函数/或成员函数中的Field静态成员进行一些操作.为了创建Inherit类的实例,我们需要在main函数之前在main.cpp中显式声明一个静态字段:
#include "Basic.h"
#include "Inherit.h"
std::vector< std::vector<char> > IBasic::Field;
int main()
{
Inherit(10);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
问题是:
类的静态成员是其类的成员(这是一个重言式)及其类命名空间(类是命名空间).它不是任何其他命名空间的结构.
一个类的非const静态数据成员必须在程序中完全定义一次,在任何类之外,在其定义的同一名称空间中(在您的情况下为全局名称空间).头文件不适合此类声明.它通常放在与头文件一起的实现.cpp文件中.
话虽如此,界面不应该有任何静态数据成员,更不用说公共成员了.这很可能是一个严重的设计错误.
归档时间: |
|
查看次数: |
153 次 |
最近记录: |