新手请教,怎么在头文件中引用外部类

leeshohwa 2014-08-16 10:06:20
student.h如下:
#include <stdio.h>
class student{
private:
char* name;
int age;
public:
void setAge(int age);
int getAger();
};
=================================
room.h如下:
#include <stdio.h>
#include "student.h"
class room{
private:
student* name=new student[10];
};


编译room.h时报错,提示 Type 'student‘ could not be resolved
如果把两个h文件合并为1个则不会报错,请问下room.h怎么引用student.h定义的类呢
...全文
410 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuyf87 2014-08-19
  • 打赏
  • 举报
回复
引用 8 楼 leeshohwa 的回复:
#include <stdio.h> #include "student.h" class student; class room{ private: student* name=new student[10]; }; 加了一行class student;编译就能通过了,这行是个什么意思?前置声明?
首先编译器要支持c++11,否则不能在类的定义中直接初始化成员变量。 楼主确定加了一行class student;就可以了?student.h中已经包含了class student的定义,这声明算不上前置了吧。
lm_whales 2014-08-19
  • 打赏
  • 举报
回复
C++11可以初始化成员变量 如果非得这么用,换个支持C++11的编译器
leeshohwa 2014-08-17
  • 打赏
  • 举报
回复
#include <stdio.h> #include "student.h" class student; class room{ private: student* name=new student[10]; }; 加了一行class student;编译就能通过了,这行是个什么意思?前置声明?
碼上道 2014-08-17
  • 打赏
  • 举报
回复
完整的错误贴出来看看,是不是#include "student.h"放的地方不对。这样没有看出问题
leeshohwa 2014-08-16
  • 打赏
  • 举报
回复
我试过了,改为student* name;一样出错,加上using namespace std;也是报错, Type 'student‘ could not be resolved
u010328107 2014-08-16
  • 打赏
  • 举报
回复
student* name=new student[10];这里有错 因为在类的定义中不能给类的成员初始化 我试过了在room.h中把student* name=new student[10];改为student* name;就对了
leeshohwa 2014-08-16
  • 打赏
  • 举报
回复
您看我那几行代码有重复定义吗,我就写了四个文件,两个h,两个cpp
乌镇程序员 2014-08-16
  • 打赏
  • 举报
回复
汗,好像跟你遇到的问题无关
乌镇程序员 2014-08-16
  • 打赏
  • 举报
回复
通过检测并设置头文件保护符避免重复include
#ifndef STUDENT_H
#define STUDENT_H
class student {
private:
	char	* name;
	int	age;
public:
	void setAge( int age );


	int getAger();
};
#endif
leeshohwa 2014-08-16
  • 打赏
  • 举报
回复
这么个简单问题竟然翻了两本pdf教材都没有找到答案,汗颜

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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