我想写一个小单例类,看起来像:
#include <vector>
class Interpreter {
private:
static Interpreter* interInstance;
Interpreter() {}
public:
static Interpreter* getInstance();
~Interpreter() {}
};
Interpreter* Interpreter::interInstance = 0;
Interpreter* Interpreter::getInstance(){
if (!interInstance)
interInstance = new Interpreter();
return interInstance;
}
但这会产生这个异常:
multiple definition of `Interpreter::getInstance()
可以通过将类和函数包装在一个命名空间中来纠正此错误。但我真的不明白为什么我需要一个命名空间。有一个 getInstance() 声明和一个实现,不是吗?