У меня есть пространство имен, в котором я хотел бы определить класс. Класс довольно сложный, поэтому я бы скорее определил его в отдельном файле заголовка, но даже самый простой код дает мне ошибку «неопределенной ссылки».Как использовать класс, определенный в отдельном заголовке в пространстве имен
main.cpp
#include <iostream>
namespace A {
#include "C.hpp"
}
int main()
{
A::C foo;
std::cout << foo.member << std::endl;
return 0;
}
C.hpp
class C {
public:
C();
int member;
}
C.cpp
C::C()
{
this->member = 10;
}
Когда я бегу g++ C.cpp main.cpp
я получаю «main.cpp :(. Текст + 0x10): неопределенная ссылка на ошибку «A :: C :: C()». Я полагаю, что это определение конструктора C :: C() как-то не так, но я не знаю, как его исправить.
Ну, ваши определения неправильны ... –
Я собираюсь предположить, что вы это сделали, потому что вы столкнулись с конфликтами именования. На этом этапе я просто хочу сказать: «Надеюсь, вы изучили свой урок о пренебрежении пространствами имен при создании классов. –