c++结构内部的类指针
Class pointer inside struct C++
问题很简单,我想我不能这样做:(我在头文件)
typedef struct {
myclass *p;
...
} mystruct;
class myclass {
private:
mystruct *s;
...
}
因为当编译器到达结构体时,它不知道myclass是什么,但出于同样的原因,我也不能反向操作:
class myclass {
private:
mystruct *s;
...
}
typedef struct {
myclass *p;
...
} mystruct;
我怎样才能做到呢?我猜有某种方式说编译器"有一个结构称为mystruct"类(2个例子)之前,所以它知道mystruct *s
这是可能的,但我不能设法做到这一点。由于
您需要使用前向声明:
class myclass;
typedef struct {
myclass *p;
...
} mystruct;
class myclass {
private:
mystruct *s;
...
}
现在编译器知道myclass
是一个类,当它第一次看到它。
同样,在c++中不需要定义类型。你可以简单地写:
struct mystruct {
myclass *p;
...
};
一般来说,可以声明一个指向尚未定义的类的指针。你只需要"声明"这个类(类myclass)。
这是定义具有交叉引用的类的一般解决方案。
首先,在现代c++中不应该再使用typedef(有更好的语法)。对于结构体,只需使用:
struct mystruct {
...
}
也可以考虑重新设计,这样你就不会有两个相互依赖的类型。如果不可能,那么就像其他人之前说的那样,向前声明类型。
相关文章:
- 指针没有更新它在void函数内部指向的值
- 为什么向量内部的指针在从函数返回时会发生变化?
- 如何在类内部使用和访问静态指针到成员值s_ptm?
- 正确的方法是什么?调用指针到指针到指针内部的函数?
- 静态指针指向这个为mock for googletest定义的类内部
- 指针(指向指针)和新/malloc 向量(向量内部)c++
- 如何让指针的深层副本将内部结构发送到内核?
- 指向C++中成员的指针如何在内部工作?
- 作为 int 传递和类内部指针之间的差异给我带来了分段错误
- 指针帮助:取消指向访问其内部数据的结构的指针
- 在函数内部错误定位后,从函数中释放返回的指针会导致芯片崩溃
- 如果访问对象,则指向的对象内部的指针会更改内存位置
- 函数指针仅在 main 内部工作
- 如何将功能指针传递到该功能内部的函数
- 当指针作为指向另一个功能内部指针的指针传递时会发生什么
- 获取指向自我内部班级的指针
- 参数内部和外部的指针
- C++:我需要释放函数内部的指针吗?
- 初始化指向另一个结构内部结构的指针
- 超载COUT查看指针内部的内容