struct C++中的类指针

Edi*_*lot 1 c++ struct class

问题很简单,我想我不能这样做:(我在头文件中)

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)

哪个也一样.