у меня есть три файла - основные, заголовок и его «реализации»:Правильный способ для реализации функций-членов
// main.cpp
#include "word_indexer.h"
int main() {
WordIndexer wd;
cout << wd.size() << endl;
return 0;
}
// word_indexer.h
class WordIndexer {
public:
int size() const; // declaring a function
};
// word_indexer.cpp
class WordIndexer {
public:
int size() const {return 0;}
};
здание с g++ -o main main.cpp word_indexer.cpp
выходами
неопределенная ссылка на «WordIndexer :: размера() Const»
Замена реализации с
// updated word_indexer.cpp
class WordIndexer {
public:
int size() const;
};
int WordIndexer::size() const {return 0;}
исправляет проблему. Я не могу понять разницу между этими word_indexer.cpp
и его обновленными версиями, они кажутся одинаковыми.
Почему у первого варианта есть проблемы с связыванием?
Btw: У вас заголовок должен иметь [включить охрану] (https://en.wikipedia.org/wiki/Include_guard). –