问题很简单,我想我不能这样做:(我在头文件中)
typedef struct {
myclass *p;
...
} mystruct;
class myclass {
private:
mystruct *s;
...
}
因为当编译器到达结构时它不知道 myclass 是什么,但出于同样的原因我也不能做相反的事情:
class myclass {
private:
mystruct *s;
...
}
typedef struct {
myclass *p;
...
} mystruct;
我怎样才能做到这一点?我猜想有某种方法可以在类(2 个示例)之前告诉编译器“有一个名为 mystruct 的结构”,因此它知道 mystruct *s
是可能的,但我无法正确地做到这一点。谢谢
最佳答案
您需要使用前向声明:
class myclass;
typedef struct {
myclass *p;
...
} mystruct;
class myclass {
private:
mystruct *s;
...
}
现在编译器在第一次看到 myclass
时就知道它是一个类。
此外,无需在 C++ 中对结构进行 typedef。你可以简单地写:
struct mystruct {
myclass *p;
...
};
同样的。
关于c++ - struct C++ 中的类指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30424186/