gpt4 book ai didi

c++ - 如何处理 C++ 中的循环组合?

转载 作者:行者123 更新时间:2023-11-30 01:13:02 24 4
gpt4 key购买 nike

我试图在 C++ 中创建一个循环组合,但我正在处理声明问题。我该如何解决它们?

这是一个示例,类 A 包含 B 对象的 vector ,但是类 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();
}
};

关于c++ - 如何处理 C++ 中的循环组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33070210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com