单例在微控制器上

华康

我正在尝试在嵌入式项目中使用单例模式,但我无法编译该项目。现在的课程非常简单,我不明白这个问题。

错误是(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,则可以使用inline可以在 H 文件中定义和初始化的变量。请参阅此处的第二个答案:如何在标题中初始化静态成员

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章