C++ 静态成员对象链接错误
我在构建项目时遇到链接错误。我有一个静态成员指针,我正在通过静态成员函数设置它。你知道有什么问题吗C++ 静态成员对象链接错误,c++,C++,我在构建项目时遇到链接错误。我有一个静态成员指针,我正在通过静态成员函数设置它。你知道有什么问题吗 class Logger { private: static MyComp* pComp; public: static void setComp(MyComp* comp); // more methods .. }; void Logger::setComp(MyComp* comp) { pComp = comp; } 获取链接错误
class Logger
{
private:
static MyComp* pComp;
public:
static void setComp(MyComp* comp);
// more methods ..
};
void Logger::setComp(MyComp* comp)
{
pComp = comp;
}
获取链接错误
架构x86_64的未定义符号:“记录器::pComp”,引用自:
Logger.o中的Logger::setComp(MyComp*) 你忘了加上
MyComp* Logger::pComp;
添加到您的cpp文件(类定义之外)。您忘记添加
MyComp* Logger::pComp;
到您的cpp文件(类定义之外).为了初始化静态数据成员,我们必须在类外包含一个正式定义。为了初始化静态数据成员,我们必须在类外包含一个正式定义。你的意思是不是说
pComp=comp
?你的意思是不是说pComp=comp
,谢谢为什么需要它?@Ahmed因为静态无效setComp(MyComp*comp)代码>是一个声明,而不是一个定义。这很有效,谢谢。为什么还需要它?@Ahmed,因为静态无效setComp(MyComp*comp)代码>是一个声明,而不是一个定义。