可能是由于单例类的实例化方式不正确导致的。以下是单例类的正确实例化方式:

  1. 在类的头文件中声明一个静态成员指针,用于存储单例实例的地址。

  2. 在类的实现文件中定义静态成员指针,并初始化为nullptr。

  3. 在类的实现文件中定义一个静态成员函数,用于返回单例实例的地址。

  4. 在静态成员函数中判断静态成员指针是否为nullptr,如果是则创建单例实例并将其地址赋值给静态成员指针,最后返回静态成员指针。

  5. 在使用单例实例的地方,调用静态成员函数获取单例实例的地址。

以下是一个示例代码:

// Singleton.h

class Singleton {
public:
    static Singleton* getInstance();

private:
    Singleton() {}
    static Singleton* instance;
};

// Singleton.cpp

Singleton* Singleton::instance = nullptr;

Singleton* Singleton::getInstance() {
    if (instance == nullptr) {
        instance = new Singleton();
    }
    return instance;
}

// main.cpp

#include "Singleton.h"

int main() {
    Singleton* instance = Singleton::getInstance();
    return 0;
}

如果仍然遇到无法解析的外部符号错误,可能是由于编译器没有找到单例类的实现文件。需要确保单例类的实现文件已经添加到项目中,并且在编译时能够被正确地链接

Qt 单例模式报错无法解析的外部符号

原文地址: https://www.cveoy.top/t/topic/cqtT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录