各位专家帮忙看看, 为什么报C4091?

femalelover 2009-10-11 09:27:34
三个文件 B.H B.CPP A.CPP

B.H中声明一个类
class Base
{
public:
int a;
Base(int para);
};

B.CPP中实际这个类
#include"b.h"

Base::Base(int para)
{
a = para;
}

A.CPP中引用这个类
extern class Base; ---------这里没有include"B.H" , 而是使用extern, 但这里会报C4091
void Hoo()
{
Base obj(10); --------由于上面认为Base没声明, 那么这里就报了c2079

}
...全文
98 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxt1123 2009-10-11
  • 打赏
  • 举报
回复
需加深对extern用法的理解
sxsong_04 2009-10-11
  • 打赏
  • 举报
回复
应该是吧,只能extern对象和函数
femalelover 2009-10-11
  • 打赏
  • 举报
回复
照楼上这么说, 如果我要生成一个类对象, 只有#include"b.h"了?
  • 打赏
  • 举报
回复
定义类对象的时候必须能够看到类的声明,否则编译器不知道分配多少内存给obj
oyster2008 2009-10-11
  • 打赏
  • 举报
回复
Base obj(10);这句话定义了类Base的对象,必须在a.cpp中包含类的声明(b.h),否则会报错,不能使用extern

64,282

社区成员

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

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