内联函数声明与实现分为两个文件导致编译出错问题
// TestA.h
class TestA { public: inline const char* GetName()const{return "Hello world";} };
以上代码编译no problem。因为声明与实现在一起,但是在实际项目中声明与实现是肯定不允许放在一起的。那么怎么办呢?
往下看:
// TestB.h class TestB { public: inline const char* GetName()const; };
// TestB.cpp const char* TestB::GetName()const { return "Hello world"; }
TestB与TestA一致,但是就是无法编译。原因就在于内联函数的声明与定义,必须在同一个文件。
也就是说要么在.h文件中声明并实现,要么在.cpp文件中声明和实现。
// TestC.h class TestC { public: inline const char* GetName()const; } const char* TestC::GetName()const { return "Hello world"; }
// TestD.cpp class TestD { public: inline const char* GetName()const; } const char* TestD::GetName()const { return "Hello world"; }
以上代码都可以编译通过。