如何通过 A 初始化 CPP 文件中的静态成员
how to initialize a static member in cpp file only situation via a
我在 cpp 文件中有一个类。在我的情况下没有头文件:
class MyClassATest
{
static Logging &logger = Logging::getInstance();
static void testMethodA()
{
logger.logDebug(....);
}
};
我尝试了几种不同的方法,试图使第一个语句起作用:
constexpr static Logging &logger = Logging::getInstance();
static Logging const &logger = Logging::getInstance();
constexpr static Logging const &logger = Logging::getInstance();
在我的情况下,有没有办法初始化该记录器变量?
编辑:
以下是不同情况下的结果:
error: field initializer is not constant
constexpr const static Logging &logger = Logging::getInstance();
error: field initializer is not constant
constexpr static const BMLogging &logger = BMLogging::getInstance();
error: field initializer is not constant
constexpr static BMLogging const &logger = BMLogging::getInstance();
error: field initializer is not constant
constexpr static BMLogging &logger = BMLogging::getInstance();
你可以在类外初始化它,如下所示:
// This goes in your CPP file at any point after the class declaration
Logging& MyClassATest::logger(Logging::getInstance());
或者,您可以将初始化放在静态成员函数中:
static Logging& logger() {
// Make a function-static variable instead of a class-static one
static Logging &loggerInstance(Logging::getInstance());
return loggerInstance;
}
在类中,成员初始化仅适用于整型。因此,您必须在类外初始化它。
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 如何在C++中使用非静态成员函数作为回调函数
- (C++)为什么静态成员可以在初始化之前使用
- 类的全局对象和静态成员
- 在作为静态成员包含在另一个类中的类的构造函数中使用 cout
- 模板化类中静态成员的延迟初始化
- 使用静态成员声明类时遇到问题
- LNK2019 在文件中调用静态成员的方法时出错.cpp
- C++ 静态成员变量 - 文件之间的访问
- C 从实现文件中访问私有静态成员
- 初始化 cpp 文件中的私有静态成员变量.错误:成员是私有的
- 文件类型引发错误:非静态成员函数的使用无效
- 如何通过 A 初始化 CPP 文件中的静态成员
- 使用.cpp文件中类的静态成员
- singleton--cpp文件中无法识别的静态成员
- 无法拆分头文件和源文件中具有静态成员函数的类
- 在.cpp文件中定义需要访问私有结构的静态成员
- 在.h文件中定义的模板类静态成员变量应该发生什么?
- 是否可以在.cpp文件中定义类的静态成员函数而不是它的头文件?
- 静态成员变量文件作用域