虽然 g++ 报告“错误:未定义对 'Log::flush()' 的引用”,这意味着我丢失了定义类 Log 的成员函数 flush 的源代码,如下所示:
class Log{
... ...
int flush();
... ...
};
但是如果g++报“error: undefined reference to 'Log::outFile'”,丢失了什么?没有()
所以这不是一个函数,那么为什么有什么需要定义的呢?
虽然 g++ 报告“错误:未定义对 'Log::flush()' 的引用”,这意味着我丢失了定义类 Log 的成员函数 flush 的源代码,如下所示:
class Log{
... ...
int flush();
... ...
};
但是如果g++报“error: undefined reference to 'Log::outFile'”,丢失了什么?没有()
所以这不是一个函数,那么为什么有什么需要定义的呢?
好吧,这不是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()
.