当我尝试内联其中一个类的方法时出现编译器错误。当我拿走“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