我有一个 C++ 类,它声明了一个静态成员。整个类都包含在一个头文件中,我宁愿避免仅仅为了包含静态成员定义而创建 .cpp 文件。我一直在尝试使用 static 关键字(在 C 意义上)和匿名 namespace ,这两者都应该给出一个在头文件静态链接(asfaik)中声明的变量,但是这两种方法都不起作用,谁能给我一个解决方案问题?
struct ServiceType {} ;
struct Transport
{
static ServiceType service ;
};
//error: definition of ‘Transport::service’ is not in namespace enclosing ‘Transport’
//namespace { ServiceType Transport::service ; }
//error: ‘static’ may not be used when defining a static data member
//static ServiceType Transport::service ;
最佳答案
如果目标只是不必创建 .cpp
文件,则
最简单的解决方案可能是包装静态数据
内联静态成员函数中的成员。换一种说法,
像这样的东西:
struct Transport
{
static ServiceType& service()
{
static ServiceType theData;
return theData;
}
};
当然,您必须使用语法 service()
,而不是
而不仅仅是 service
,访问它。
关于c++ - 使用静态链接声明静态成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15272012/