单片机上的Singleton



我正试图在嵌入式项目中使用Singleton模式,但我无法编译该项目。现在的课很简单,我不理解这个问题。

错误是(48,在我的代码中是实例函数的最后一行(:

RadioWrapper.h:48: undefined reference to `RadioWrapper::mInstance'

有什么想法吗?

#define RADIOWRAPPER_H_
class RadioWrapper
{
protected:
RadioWrapper() {};
~RadioWrapper() { mInstance = NULL;}
public:
static RadioWrapper* instance (void)
{
if (!mInstance)
{
mInstance = new RadioWrapper();
return mInstance;
}
else
{
return mInstance;
}
}
void setRx (void);
private:
static RadioWrapper* mInstance;
};
#endif /* RADIOWRAPPER_H_ */

类的静态成员,如static RadioWrapper* mInstance,必须定义(H文件中的内容仅为声明(。

您需要添加:

/*static*/ RadioWrapper::mInstance = nullptr;

(/*static*/前缀仅用于文档(。

这应该添加到CPP文件中,而不是H文件中(否则,如果H文件包含多次,则会有多个定义。(

如果使用的是C++17,则可以使用可以在H文件中定义和初始化的inline变量。请参阅此处的第二个答案:如何初始化标头中的静态成员

相关内容

  • 没有找到相关文章

最新更新