我有两个班级 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。但是我必须在哪里(或如何)放置 sortStruct,因为它使用 A 和 B 的定义。而且我总是得到错误
Wrong usage of forward declaration A
感谢帮助。