У меня проблема, может быть глупая.
Дело в том, что я не могу встроить конструктор в класс.
Предположим, у меня есть класс с именем Foo.
Если я напишу реализацию Foo примерно так:
class Foo {
int p;
public:
Foo() { p = 1; }
};
или даже так:
class Foo {
int p;
public:
Foo();
};
inline Foo::Foo() {
p = 1;
}
Программа не будет компилироваться.
Я использую класс, используя стандартный метод:
Foo obj;
Теперь, когда я запускаю 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
В то же время, когда я использую тот же код, после компиляции класса в качестве разделяемой библиотеки (с фабричными функциями для возврата указателя объекта), он работает правильно.
Есть предположения, почему это происходит?