【发布时间】:2014-11-14 05:52:32
【问题描述】:
我从网上找到的教程改编了我的 Singleton 课程。我的标题看起来像:
class Logger{
public:
static Logger *instance();
~Logger();
private:
Logger();
static Logger *instance_;
};
而cpp文件是:
Logger* Logger::instance_=nullptr; //Confused about this
Logger *Logger::instance(){
if (instance_==nullptr){
instance_=new Logger();
}
return instance_;
}
Logger::Logger(){}
几个问题:
1) 在我的 cpp 的第一行,如果我只写“Logger::instance_=nullptr;”然后我得到一个错误。既然已经在头文件中声明了,为什么还要再提一下 instance_ 是一个指针呢?
2) 为什么我不能将头文件中的instance_初始化为“static Logger *instance_=nullptr;”?这样做会给我以下错误:
错误:静态数据的类内初始化需要“constexpr” 非整数类型的成员‘Logger* Logger::instance_’ [-fpermissive] 静态记录器*instance_=nullptr; ^
谢谢!
【问题讨论】:
标签: c++ design-patterns singleton