问题很简单,我想我不能这样做:(我在头文件中)
typedef struct {
myclass *p;
...
} mystruct;
class myclass {
private:
mystruct *s;
...
}
Run Code Online (Sandbox Code Playgroud)
因为当编译器到达结构时它不知道myclass是什么,但是由于同样的原因我不能反过来:
class myclass {
private:
mystruct *s;
...
}
typedef struct {
myclass *p;
...
} mystruct;
Run Code Online (Sandbox Code Playgroud)
我怎么能做到这一点?我猜有一些方法可以说编译器"有一个叫做mystruct的结构"在类之前(2例)所以它知道mystruct *s它是可能的但是我无法设法做到这一点.谢谢
eml*_*lai 10
您需要使用前向声明:
class myclass;
typedef struct {
myclass *p;
...
} mystruct;
class myclass {
private:
mystruct *s;
...
}
Run Code Online (Sandbox Code Playgroud)
现在,编译器myclass在第一次看到它时就知道它是一个类.
此外,无需在C++中使用typedef结构.你可以简单地写:
struct mystruct {
myclass *p;
...
};
Run Code Online (Sandbox Code Playgroud)
哪个也一样.