我有一个名为 SuperTree
的树结构类在我的 C++ 程序中,我希望它有一个返回 struct
的实例方法或pair
其中哪一个属性是指向 SuperTree
的指针对象。
insert
在我的SuperTree
中起作用类应该返回 Res
结构体,其中包含对另一个 SuperTree
的引用对象和一个 bool 值。但是,如果我尝试编译代码,则会收到以下错误消息:
supertree.cpp:24: error: ISO C++ forbids declaration of ‘Res’ with no type
我也无法定义 Res
结构在我的 SuperTree
之前类,因为它也不会编译。也许这是 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/