2012-02-02 53 views
1

这里是代码,为什么我链接时得到未定义的引用?未定义引用构造函数时,我明确地“输出”

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 

-

#include "TimerManager.h" 

int main(int argc, char *argv[]) 
{ 
    TimerManager *l_tm = TimerManager::Instance(); 
    return 0; 
} 

#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; 
} 

回答

3

我怀疑你的目标文件是过时的。

这编译和链接我:

% 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] 
相关问题