Предположим, у меня есть 3 файла в программе. Один файл заголовка и два файла .cpp. Я включил файл заголовка в оба файла .cpp.
- Я объявил класс в файле заголовка и определил класс в каждом из файлов .cpp одинаково. Так не приведет ли этот тип реализации к ошибке нескольких определений? Если да, то потому, что у него есть две копии определений классов, и компилятор не знает, какую из них использовать при связывании двух файлов .o?
- Я объявил и определил класс в заголовочном файле. Этот случай аналогичен приведенному выше (упомянутому в пункте 1)?
- Я объявил класс в заголовочном файле и определил класс в каждом из .cpp, но определения (тела функций) различаются. Так будет ли этот тип реализации вызывать ошибку нескольких определений? Если да, то как мы можем решить эту проблему, когда тела функций различаются в файлах .cpp?
Подробнее здесь: https://stackoverflow.com/questions/189 ... this-issue