c++ - struct C++ 中的类指针

标签 c++ class struct

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

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/

相关文章:

c++ - 如何将变量从变量传递到指针结构对象?

php - 访问兄弟类方法

C 输入问题

c++ - 是否可以编写通用的重新绑定(bind)模板?

c++ - 从双指针数组读取 - NULL

css - 如何定位级联类和 ID 中的特定类

c++ - 在类类内不必要使用枚举类

pointers - 将结构中的双指针传递给 CUDA

c++ - 如何知道两个 C 字符串是否指向一个内存块?

c++ - 试图替换 C++ 字符串中的字符,完全卡住