我有一个问题,可能是愚蠢的.
问题是,我无法在类中内联构造函数.
考虑我有一个名为Foo的类.
如果我写这样的Foo的实现:
class Foo {
int p;
public:
Foo() { p = 1; }
};
Run Code Online (Sandbox Code Playgroud)
或者甚至喜欢这样:
class Foo {
int p;
public:
Foo();
};
inline Foo::Foo() {
p = 1;
}
Run Code Online (Sandbox Code Playgroud)
该程序将无法编译.
我使用标准方法的类:
Foo obj;
Run Code Online (Sandbox Code Playgroud)
现在当我运行g ++ main.cpp foo.cpp时,我得到:
/tmp/ccyVtxvp.o: In function `main':
main.cpp:(.text+0x17): undefined reference to `Foo::Foo()'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
同时,当我使用相同的代码时,在将类编译为共享库(使用工厂函数返回对象指针)之后,它可以正常工作.
有没有猜到为什么会这样?