c – 转发声明生成不兼容的类型错误

c – 转发声明生成不兼容的类型错误,第1张

概述我一直在阅读有关前瞻性声明的一些内容,包括在这个论坛中.他们都说它使我们免于包含头文件,但以下代码会生成错误: #ifndef CLASSA_H_#define CLASSA_H_class B;class A {public: A(); ~A(); int getCount();private: static int _count; int 我一直在阅读有关前瞻性声明的一些内容,包括在这个论坛中.他们都说它使我们免于包含头文件,但以下代码会生成错误:
#ifndef CLASSA_H_#define CLASSA_H_class B;class A {public:    A();    ~A();    int getCount();private:    static int _count;    int _num;    B _b1;   //ERROR};

编译说:
A.h:23:错误:字段’_b1’的类型不完整

我注意到如果我制作B型*的_b1,问题就解决了.

那么前向声明只适用于指针类型吗?
如果我想要A持有B对象,我必须#inlcude“B.h”?

谢谢!

解决方法 编译器必须知道B类的确切定义,以确定至少给A类的大小.如果使用指针,它就知道它的大小.

请注意,循环依赖是不可能的.如果你想

class A { B b; };class B { A a; };

然后A和B必须有无限大小……

总结

以上是内存溢出为你收集整理的c – 转发声明生成不兼容的类型错误全部内容,希望文章能够帮你解决c – 转发声明生成不兼容的类型错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1234955.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存