Рассмотрим этот кодВстраиваемые конструкторы? Объяснить такое поведение [C++]
#include <iostream>
#include <cstdio>
using namespace std;
class Dummy {
public:
Dummy();
};
inline Dummy::Dummy() {
printf("Wow! :Dummy rocks\n");
}
int main() {
Dummy d;
}
Все хорошо здесь!
Теперь я делаю эту модификацию. Я переношу объявление Dummy на «dummy.h».
class Dummy {
public:
Dummy();
};
и определить конструктор пустышки() следующим образом в "dummy.cpp"
#include "dummy.h"
inline Dummy::Dummy() {
printf("Wow! :Dummy rocks\n");
}
И, наконец, у меня есть мой главный файл как:
#include <iostream>
#include <cstdio>
#include "dummy.h"
using namespace std;
int main() {
Dummy d;
}
Он компилирует хорошо, но я получаю ошибку компоновщика, жалуясь на неопределенную ссылку на Dummy :: Dummy().
Любые идеи.
-
yesah.it работает с ключевым словом inline, удаленным из конструктора, что явно подразумевает, что компоновщик получает как объектные файлы, Что касается определения встроенных методов в заголовке, я вижу вашу точку, однако я удивляюсь, что он работает с другими функциями и просто Обратите внимание на конструктор? – sud03r
@Neeraj Это проблема, потому что эти другие функции использовались только в том же файле .cpp, что и встроенные функции. – 5ound
@above correct .. – sud03r