在g ++中链接错误“未定义的引用”时丢失了什么

时间:2013-02-01 05:09:29

标签: c++ gcc

  

可能重复:
  What is an undefined reference/unresolved external symbol error and how do I fix it?

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

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

但是如果g ++报告“错误:未定义引用'Log :: outFile'”,那么丢失了什么?没有()所以这不是一个函数,为什么还有什么需要定义?

1 个答案:

答案 0 :(得分:4)

嗯,这不是 GCC诊断输出危险中的一个有趣的练习!


  

但是如果g ++报告“错误:未定义引用'Log :: outFile'”,那会丢失什么?

Log的{​​{1}}静态数据成员的定义很可能是outFile

猜测:

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

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

你需要写:

std::string Log::outFile;

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