如何处理c++中的循环组合?
How can I deal with cyclic composition in C++?
我试图在c++中创建一个循环组合,但我正在处理声明问题。我该如何解决它们呢?
这是一个例子,类A包含B对象的向量,但是类B需要首先声明A,因为它在构造函数中需要:
class A {
private:
std::vector<B> sons;
public:
void create_son() {
B obj(this);
sons.push_back(obj);
obj.some_method();
}
};
class B {
private:
A* parent;
public:
B (A* _parent) { parent = _parent; }
void some_method() {}
};
在class A
中,您使用了class B
的对象,因此需要对class B
进行完整的定义。为了解决这个问题,将class B
定义置于class A
之上。同时,在class B
中,您只使用指向A的指针,因此您不需要class A
的完整定义:声明在那里就足够了。
因此,在class B
定义之上增加class A
的前向声明。
class A;
class B {
private:
A* parent;
public:
B (A* _parent) { parent = _parent; }
void some_method() {}
};
class A {
private:
std::vector<B> sons;
public:
void create_son() {
B obj(this);
sons.push_back(obj);
obj.some_method();
}
};
你可以向前声明指针类型:
class A; // sufficient to fully determine B
class B {
private:
A* parent;
public:
B (A* _parent) { parent = _parent; }
void some_method() {}
};
// now we have B defined, we can define A
class A {
private:
std::vector<B> sons;
public:
void create_son() {
B obj(this);
sons.push_back(obj);
obj.some_method();
}
};
相关文章:
- 如何循环打印顶点结构
- 如何在C++中从两个单独的for循环中添加两个数组
- 将多个 for 循环组合成单个迭代器
- 递归回溯打印长度为N的二进制数的所有组合,而不使用循环
- 通过字符串迭代并将每个循环中的先前字符组合在一起
- 如何将一个 while 循环与 for 循环组合在一起?
- 高速解决方案以循环浏览不同变量的所有组合,并使用启动步骤停止方案(C )
- 在循环中组合元组
- 为循环嵌套的变量快速生成数字组合
- 嵌套c++11范围循环,用于查找组合
- 用于C++中的循环的组合
- C++可能的硬币组合使用while循环
- 可能的组合和循环
- 在for循环中获得所有组合的最快方法是什么
- 如何将查找组合的几个循环代码转换为递归方法
- 如何处理c++中的循环组合?
- 用于组合组的'for'循环
- 组合和循环依赖
- 算法循环组合
- 通过只循环一次来组合c++标准算法