當我嘗試內聯其中一個類的方法時出現編譯器錯誤。當我拿走「inline」關鍵字時,它會起作用。C++內聯類方法會導致未定義的引用
下面是一個簡化的例子:
main.cpp中:
#include "my_class.h"
int main() {
MyClass c;
c.TestMethod();
return 0;
}
my_class.h:
class MyClass {
public:
void TestMethod();
};
my_class.cpp:
#include "my_class.h"
inline void MyClass::TestMethod() {
}
我嘗試編譯:
g++ main.cpp my_class.cpp
我得到的錯誤:
main.cpp:(.text+0xd): undefined reference to `MyClass::TestMethod()'
一切都很好,如果我拿走了 「內聯」。什麼導致這個問題? (以及我應該如何內聯類方法?是否有可能?)
謝謝。
`inline`關鍵字最肯定不只是一個暗示,至少在C++中 - 它們告訴編譯器使定義變弱,並且只在需要時才發出。這意味着它必須存在於使用的地方,但另一方面可能會包含多次 – bdonlan 2011-01-22 17:53:49
無論我在哪裏放置內聯(或者如果我將內聯放在兩者中),我仍然會收到錯誤。在4種組合中(my_class.h和/或my_class.cpp中的內聯),只有沒有inline的工作組才能工作。 – FrankMN 2011-01-22 17:54:53