Qt Creator:"使用内联函数但从未定义过" - 为什么?

Ton*_*ony 14 c++ qt qt-creator

为什么我在Qt Creator中收到此警告:`inline function'bool Lion :: growl()'使用但从未定义过?

我仔细检查了我的代码,并有一个声明

inline bool growl ()in Lion(lion.h)

以及相应的实施lion.cpp:

inline bool Lion::growl ()

这是怎么回事?

编辑:我的假设是,在.cpp文件中定义实际的内联方法是合法的(inline关键字警告编译器在其他地方查找方法体),或者我错了?

我不想让我的头文件与实现细节混乱.

Joh*_*han 30

好吧,我不知道确切的问题,但对于初学者:

  • 内联方法应该在头文件中实现.编译器需要知道实际内联它的代码.
  • 在类声明中使用"inline"关键字也没有任何效果.但它也不会伤害.

另见:c ++ faq lite

  • @Thomi如果我只是在一个函数周围创建一个单行包装器,我很确定它更好地被内联. (8认同)
  • 就个人而言(这是一个品味问题),我讨厌*代码明确地将代码标记为内联 - 或者使用inline关键字,或者将实现放在头文件中有两个原因:1)它打破了封装.2)它会伤害性能 - 是的,你听到了我的声音.你认为谁知道内联一个方法是否能最好地提高性能:编译器或程序员.认真的人,相信你的优秀者,他们做得更好(在很多情况下,但不是全部),那么你永远都会. (4认同)