это просто поставило меня в тупик, поэтому я решил запросить здесь:
У меня есть класс следующим образом:
class MyClass {
public:
void myThreadFunc();
};
Это в шапке. В конструкторе
MyClass::MyClass() {
...
boost::thread t(boost::bind(&MyClass::myThreadFunc, this));
...
}
Как я уже видел. НЕТ ошибок времени компиляции. Тем не менее, когда я ссылаюсь следующим образом:
g++ -o test.exe main.o MyClass.o /*specify boost and other libraries */
Я получаю:
MyClass.o:MyClass.cpp:(.text+0xa4): undefined reference to `MyClass::myThreadFunc()'
collect2: ld returned 1 exit status
Что не имеет никакого смысла. Что меня особенно удивляет, так это ошибка linker . Я включил оба моих объектных файла.
Может кто-нибудь сказать мне, что происходит? Если это может быть уместно, я на MinGW на Windows.
EDIT:
Эпический провал. Я забыл префикс MyClass :: при определении функции в моем файле cpp. Я просто не решил проверить это. Почти так же плохо, как забыть о семиколине после определения класса.