gpt4 book ai didi

c++ - 使用静态链接声明静态成员

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:37:35 28 4
gpt4 key购买 nike

我有一个 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com