私はクラスを定義したい名前空間を持っています。クラスはかなり複雑ですので、別のヘッダーファイルで定義したいと思いますが、最も簡単なコードでも "未定義の参照"エラーが発生します。名前空間内の別のヘッダで定義されたクラスを使用する方法
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()定義だと思いますが、それを修正する方法は不明です。
あなたの定義は間違っています... –
名前の競合にぶつかっているので、これをやったと仮定します。 –