两个头文件如果需要相互引用的话,编译的过程中存在一些问题。 然后 google 有一些简单的方法比如不引用只声明,也是可以过编译的,但是涉及到成员函数调用的时候有时还是会有问题。 我觉得这是一种治标不治本的方法,所以想知道比如对于我下面的这个场景,能不能从设计模式的角度,有更好的设计方法吗?
比如现在需要用 Tree 结构来存储 Frame 节点,同时 Frame 节点内需要了解当前树结构的信息,比如我在树结构内定义了每一个 Frame 节点的长度,所以我需要 Tree->GetLength(Frame*) 来获取。所以这两个 class 我认为需要包含这几个函数的
class Frame{
int Id;
char * data;
Tree* MyTree;
Frame(MyTree* T){
data = new char(T->GetLength(Id));
}
}
class Tree{
unordered_map<int,int> FrameSize;
vector<Frame*> Nodes;
Tree(){
Nodes.push_back(new Frame(this));
...
Nodes.push_back(new Frame(this));
}
int GetLength (int Id){
return FrameSize[Id];
}
}
上面这段代码可能有一些语法上是不通的,但是我想实现的基本函数的思路体现出来了。我觉得这种设计模式存在问题,请问有没有更好的模式或者说对这个问题的解决办法?谢谢!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.