先说解决方法:在头文件里直接实现函数
inline void cardClear(){
m_cards.clear();
}
问题解决;
问题的出现:内联定义写在头文件里
inline bool cardIsEmpty();
定义在实现文件(c/cpp)
bool Cards::cardIsEmpty()
{
return m_cards.isEmpty();
}
为什么?
这个问题出现的原因是内联函数的特性。内联函数是在编译时展开的,直接把代码粘贴到函数调用处,而不是在运行时通过函数调用机制调用的。因此,编译器需要在编译时就能看到内联函数的定义,而不仅仅是声明。
如果你在头文件中声明了一个内联函数,但是在实现文件中提供了定义,那么在包含这个头文件的其他源文件中,编译器只能看到声明,看不到定义。这就会导致“内联函数未定义引用”的错误。
因此,对于内联函数,我们通常在头文件中同时提供声明和定义,以确保编译器在编译任何包含这个头文件的源文件时都能看到内联函数的定义