gpt4 book ai didi

c++ - 结构定义之前的 C++ 类中的结构返回函数

转载 作者:搜寻专家 更新时间:2023-10-31 01:09:04 27 4
gpt4 key购买 nike

我的 C++ 程序中有一个名为 SuperTree 的树结构类,我希望它有一个返回 structpair 的实例方法code> 其中一个属性是指向 SuperTree 对象的指针。

我的 SuperTree 类中的 insert 函数应该返回一个 Res 结构,它包含对另一个 SuperTree 对象和一个 bool 值。但是,如果我尝试编译代码,则会收到以下错误消息:

supertree.cpp:24: 错误:ISO C++ 禁止声明没有类型的“Res”

我也无法在我的 SuperTree 类之前定义 Res 结构,因为它也不会编译。也许这是 C++ 泛型类型或其他东西的情况(我还不知道如何使用)。

所以这是我的尝试:

#include <cstdio>
#include <utility>
using namespace std;

class AVL {
public:
int key;
int bf;
AVL* leftChild;
AVL* rightChild;

AVL()
{
}

~AVL() {};

AVL rotateLeft();
AVL rotateRight();

Res* insert(int value);

int remove();
int size();
};

// typedef pair<AVL, bool> result;

typedef struct result {
struct AVL *avl;
bool changed;
} Res;

请注意,pair 定义已被注释掉,但我很高兴你们也能回答他们!

就是这样,我怎样才能在我的 中同时拥有 SuperTree 类和 Res 结构以及 Res 指针返回函数SuperTree类?

欢迎任何帮助。谢谢!

最佳答案

如果两个类或结构必须相互引用,您需要为一个或另一个添加前向声明,如下所示:

struct Res; // No typedef is necessary in C++
class AVL {
...
Res* insert(int value);
};
struct Res {
AVL *avl;
bool changed;
};

请注意 pair<AVL*,bool>也可以代替 Res ,让您跳过前向声明:

class AVL {
...
std::pair<AVL*,bool> insert(int value);
};

关于c++ - 结构定义之前的 C++ 类中的结构返回函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17376043/

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