私は2つのクラスAとBを持っています
A.hpp
#include <vector>
#include <algorithm>
#include "B.hpp"
class A {
public:
void sortTrans() { std::sort(trans_.begin(), trans_.end(), sortStruct); }
unsigned int name() { return name_; }
private:
std::vector<B*> trans_;
unsigned int name_;
};
B.hpp:
class A;
class B {
A& source_;
A& dest_;
unsigned int choice_;
};
今私は選択と名前の値でtrans_をソートしたいので、私は書いた
struct sort {
bool operator()(B* t1, B* t2) {
if (t1->choice < t2->choice)
return true;
if (t1->dest_.name() < t2->dest_.name())
return true;
return false;
}
} sortStruct;
しかし今、循環依存を壊すという問題に直面しています。A の定義は A.hpp にあり、B の定義は B.hpp にあります。B.hpp では、A の前方宣言を使用し、A には B.hpp が含まれています。しかし、A と B のいずれかの定義を使用するため、sortStruct をどこに (またはどのように) 配置する必要がありますか?そして、常にエラーが発生します。
Wrong usage of forward declaration A
手伝ってくれてありがとう。