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)是一个声明,而不是一个定义。