私はコードがうまくいきません。 b.cppでは、クラスBはクラスAを使用しますが、クラスAの宣言が見つからないため失敗します。 ただし、a.hppは直前に含まれています。 #include "a.hpp"がここで動作しないのはなぜですか?ヘッダーには循環的な依存関係が含まれています
ありがとうございました!
//===============================================
//file: a.hpp
//===============================================
#ifndef _A_HPP
#define _A_HPP
#include "b.hpp"
class A{
public:
A();
// others methods using B here
};
#endif
//===============================================
//file: a.cpp
//===============================================
#include "a.hpp"
A::A(){}
//===============================================
//file: b.hpp
//===============================================
#ifndef _B_HPP
#define _B_HPP
#include "a.hpp"
class B{
public:
B(A a);
};
#endif
//===============================================
//file: b.cpp
//===============================================
#include "b.hpp"
B::B(A a){}
SHELL$ g++ -c a.cpp
In file included from a.hpp:7,
from a.cpp:4:
b.hpp:11: error: expected ‘)’ before ‘a’
を宣言転送することができ、私はの#includeを考えていた – user744629