C++ 对构造函数的未定义引用(当我显式使用它时)";键入“out”;

C++ 对构造函数的未定义引用(当我显式使用它时)";键入“out”;,c++,singleton,undefined-reference,C++,Singleton,Undefined Reference,这是代码,为什么我在链接时得到一个未定义的引用 g++ -Wall -o main main.o TimerManager.o TimerManager.o: In function `TimerManager::Instance()': TimerManager.cpp:(.text+0x2d): undefined reference to `TimerManager::TimerManager()' collect2: ld returned 1 exit status make: ***

这是代码,为什么我在链接时得到一个未定义的引用

g++ -Wall -o main main.o TimerManager.o
TimerManager.o: In function `TimerManager::Instance()':
TimerManager.cpp:(.text+0x2d): undefined reference to `TimerManager::TimerManager()'
collect2: ld returned 1 exit status
make: *** [main] Error 1
--



我怀疑你的目标文件过期了

这为我编译和链接:

% g++ -Wall -o main main.cpp TimerManager.cpp
main.cpp: In function 'int main(int, char**)':
main.cpp:5:17: warning: unused variable 'l_tm' [-Wunused-variable]
#ifndef TIMERMANAGER_H_
#define TIMERMANAGER_H_

#include <stdlib.h>

class TimerManager {
public:
  static TimerManager *Instance();
  ~TimerManager();
protected:
  TimerManager();
private:
  static TimerManager *s_instance;
};

#endif
#include "TimerManager.h"

TimerManager *TimerManager::s_instance = NULL;

TimerManager::TimerManager()
{
}

TimerManager::~TimerManager()
{
  delete s_instance;
}

TimerManager *TimerManager::Instance() {
  if (s_instance == NULL) {
    s_instance = new TimerManager();
  }
  return s_instance;
}
% g++ -Wall -o main main.cpp TimerManager.cpp
main.cpp: In function 'int main(int, char**)':
main.cpp:5:17: warning: unused variable 'l_tm' [-Wunused-variable]