首页 > 解决方案 > 调用单例时未定义的引用

问题描述

这是这个问题的后续 (我将在最后发布必要的类定义以便理解它)

这次我有

Class1<Class2> & anObject= Class1Singleton::GetInstance();

我更正了先前的错误,因此现在GetInstance()将返回类型的对象Class1(不是单例!)分配给正确的类型。

我尝试构建它并编译!但是这次我遇到了链接器错误

undefined reference to Singleton<Class1<Class2>>::GetInstance()
collerc2: error: ld returned 1 exit status

起初我以为它不再是单例了,但实际上Class1Singleton是单例!为什么链接器不能引用它的函数?


这些课程是:

template <class T>
class Singleton {
public:
    static T& GetInstance()
    {
        static T instance;
        return instance;
    }

private:
    Singleton() {}
    ~Singleton() = default;
}

class Class2;

template <class T>
class Class1{
  void sayHi();
};

using Class1Singleton= Singleton<Class1<Class2>>;

标签: c++templatessingletonlinker-errors

解决方案


推荐阅读