-2

可能重复:
什么是未定义的引用/未解决的外部符号错误,我该如何解决?

虽然 g++ 报告“错误:未定义对 'Log::flush()' 的引用”,这意味着我丢失了定义类 Log 的成员函数 flush 的源代码,如下所示:

class Log{   
   ... ...   
   int flush();   
   ... ... 
};

但是如果g++报“error: undefined reference to 'Log::outFile'”,丢失了什么?没有()所以这不是一个函数,那么为什么有什么需要定义的呢?

4

1 回答 1

4

好吧,这不是GCC 诊断输出危险中的有趣练习吗!


但是如果g++报“error: undefined reference to 'Log::outFile'”,丢失了什么?

Log很可能,被调用的静态数据成员的定义outFile

猜测:

class Log
{
   int flush();
   // ... more functions ...

   static std::string outFile;
   // ... more data ...
};

你需要写:

std::string Log::outFile;

恰好在一个翻译单元中;将它放在一个.cpp文件中,可能是您在其中放置Log::flush().

于 2013-02-01T05:11:20.660 回答