c++ imcomplete type问题

contestjia 2017-11-24 10:35:44
在类A中定义成员函数func,func 的参数是A a,但是此时A还没完全定义,为什么能正常编译过,并且在func函数体中,定义A b也是没问题的,不是定义类对象之前,必须先看到完整的类定义吗
#include <iostream>
class A{
public:
void func(A a){
A b;
}
private:
int a;
};
int main(){
}

但以下代码就会有 imcomplete type问题
#include <iostream>
class A;
void func(A a){
A b;
}
class A{
private:
int a;
};
int main(){
}

...全文
225 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 版主 2017-11-24
  • 打赏
  • 举报
回复
https://msdn.microsoft.com/en-us/library/200xfxh6.aspx
paschen 版主 2017-11-24
  • 打赏
  • 举报
回复
首先解释下不完整类类型Imcomplete class type:只见声明不见定义的类、结构体或是联合体;相对应的就是complete type,就是编译器可以确定的类型 这里需要的是类的实现,而不只是声明,在类中定义的已经有类的实现,编译器知道如何生成代码
contestjia 2017-11-24
  • 打赏
  • 举报
回复
谢谢版主,明白了

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧