C ++ Singleton:“未定义引用”错误

吉尔吉斯

我试图在不分配内存的情况下实现单例设计模式。我尝试搜索解决方案,但似乎每个解决方案都是针对使用内存分配定义的单个实例。

我将构造函数设为私有,添加到头文件中以使其成为单例设计模式的唯一代码是:

static ParametersServerPC& ParametersServerPC::GetInstance() {

    static ParametersServerPC instance;
    return instance;

}

这是从ParametersServerABS具有空构造函数定义的基类派生的类ParametersServerABS是一个抽象类。

当我尝试ParametersServerPC在单独的文件中实例化一个类时:

ParametersServerPC& paramServer = ParametersServerPC::GetInstance();

我收到此错误:

undefined reference to `ParametersServerPC::GetInstance()'

以下是.cpp.hpp文件:

parameters_server_abs.hpp:

#ifndef PARAMETERS_SERVER_ABS_HPP_
#define PARAMETERS_SERVER_ABS_HPP_

class ParametersServerABS {

    public:

        ParametersServerABS();

        ~ParametersServerABS();

        virtual bool Load() = 0;

};

#endif

parameters_server_abs.cpp:

#include "mid_level/parameters_server_abs.hpp"

ParametersServerABS::ParametersServerABS() {}

ParametersServerABS::~ParametersServerABS() {}

parameters_server_pc.hpp:

#ifndef PARAMETERS_SERVER_PC_HPP_
#define PARAMETERS_SERVER_PC_HPP_

#include <string>

#include "mid_level/parameters_server_abs.hpp"

class ParametersServerPC: public ParametersServerABS {

    public:

        ~ParametersServerPC();

        static ParametersServerPC& GetInstance();

        virtual bool Load();

   private:

        ParametersServerPC(std::string parameterFileName = "parameters.txt");

        std::string _parameterFileName;

};

parameters_server_pc.cpp:

#include "mid_level/parameters_server_pc.hpp"

ParametersServerPC::ParametersServerPC(std::string parameterFileName = "parameters.txt") :
        _parameterFileName(parameterFileName) {

}

ParametersServerPC::~ParametersServerPC() {

}

static ParametersServerPC& ParametersServerPC::GetInstance() {

    static ParametersServerPC instance;
    return instance;

}

virtual bool ParametersServerPC::Load() {

    return true; // TODO

}

my_test_file.cpp

#include "mid_level/parameters_server_pc.hpp"

ParametersServerPC& paramServer = ParametersServerPC::GetInstance();
ramses728

未定义对“ ParametersServerPC :: GetInstance()”的引用

这似乎是链接器错误。如果您可以发布编译控制台的输出,则可以进一步缩小范围。

同时,您可以检查构建系统,并查看是否从编译中省略了一些源文件。

在单例模式上,已经有一些不错的答案。有关模式的描述以及有关单例的一般性问题,更多关于该主题的信息

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C编译-“未定义引用”?

来自分类Dev

C中的“未定义的函数引用”错误,具体取决于定义的位置

来自分类Dev

在C程序中出现错误“对gettid的未定义引用”

来自分类Dev

C ++对模板方法的未定义引用

来自分类Dev

C- Readline()未定义引用

来自分类Dev

Snort错误:plugbase.c:对“设置”的未定义引用

来自分类Dev

错误:编译C ++时出现“未定义引用”

来自分类Dev

对WinMain的未定义引用(C ++ Mingw)

来自分类Dev

未定义对函数的引用?C ++

来自分类Dev

对C头文件的未定义引用

来自分类Dev

CMake CUDA C ++链接错误-对`someFunction()`的未定义引用

来自分类Dev

C-未定义的引用

来自分类Dev

C ++:对构造函数的未定义引用

来自分类Dev

C中的“未定义的函数引用”错误,具体取决于定义的位置

来自分类Dev

C ++错误:未定义的引用...和的多个定义

来自分类Dev

未定义对函数c的引用

来自分类Dev

C ++对模板方法的未定义引用

来自分类Dev

C ++“未定义引用”错误

来自分类Dev

Snort错误:plugbase.c:对“设置”的未定义引用

来自分类Dev

未定义对'WinMain @ 16'的引用(C ++)

来自分类Dev

C ++:对ERROR的未定义引用

来自分类Dev

未定义的函数引用(C ++)

来自分类Dev

C ++未定义的引用

来自分类Dev

C ++:对void函数的未定义引用

来自分类Dev

C Opengl中的未定义引用

来自分类Dev

未定义引用“ Class :: method”的C ++?

来自分类Dev

对C ++中函数的未定义引用

来自分类Dev

对C ++中函数的未定义引用

来自分类Dev

C++ 错误“对 GPScoord::(double,double) 等的未定义引用”