VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 685|回复: 9

未定义基类的问题很迷糊

[复制链接]
94_avatar_middle
最佳答案
0 
在线会员 发表于 2020-4-8 15:13:23 | 显示全部楼层 |阅读模式
本帖最后由 ioulex 于 2020-4-8 15:19 编辑

定义了三个类,CStudent、Xiao_student、Zhong_student,Xiao_student 继承CStudent,Zhong_student继承Xiao_student。


CStudent 类的头文件

#include <iostream>
#include <string.h>
using namespace std;
class CStudent
{
public:
        char* p_name;
        char sex;
        int num;
        int age;
        static int master;
        void print_name();
        CStudent();
        CStudent(const char* t_name, char t_sex, int t_num, int t_age);
        ~CStudent();
};

CStudent 类的CPP文件

#include "CStudent.h"
int CStudent::master = 1;
void CStudent::print_name()
{
        cout << p_name << endl;
}
CStudent::CStudent()
{
}
CStudent::CStudent(const char* t_name, char t_sex, int t_num, int t_age)
{
        int n_len = strlen(t_name) + 1;
        p_name = new char[n_len];
        memset(p_name, 0, n_len);
        strcpy_s(p_name, n_len, t_name);
        sex = t_sex;
        num = t_num;
        age = t_age;
}
CStudent::~CStudent()
{
        cout << "析构函数被调用了" << endl;
}


小学生类的头文件

#include <iostream>
#include <string.h>
using namespace std;
class Xiao_student : public CStudent
{                                                                              //错误提示行,错误提示:"CStudent":未定义基类
public:
        int yuwen_score;
        int shuxue_score;
        Xiao_student();
        ~Xiao_student();
};


小学生类的CPP文件

#include "Xiao_student.h"
Xiao_student::Xiao_student()
{
}
Xiao_student::~Xiao_student()
{
        cout << "小学生被析构了" << endl;
}

中学生类的头文件


#include <iostream>
#include <string.h>
using namespace std;
class Zhong_student:public Xiao_student
{                                                                         //错误提示行,错误提示:"Xiao_student":未定义基类
public:
        int wuli_score;
        int huaxue_score;
        Zhong_student();
        ~Zhong_student();
};


中学生类的CPP文件

#include "Zhong_student.h"
Zhong_student::Zhong_student()
{
}
Zhong_student::~Zhong_student()
{
        cout << "中学生被析构了" << endl;
}

不太懂未定义基类这个问题是出自哪里,网上好多人说,头文件中不要互相引用,我也遵从了这个原则。

两条错误提示

错误提示:"Xiao_student":未定义基类
错误提示:"Xiao_student":未定义基类

编译环境:vs2019






上一篇:指针遍历字符串
下一篇:求大佬帮忙解决一下问题
94_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-4-8 15:15:49 | 显示全部楼层
@Syc 老师救我。
51_avatar_middle
最佳答案
90 
online_admins 发表于 2020-4-8 15:29:52 | 显示全部楼层
这个就是头文件未包含,在 Xiao_student.h 中添加:
#include "CStudent.h"
在 Zhong_student.h 文件的顶部添加:#include "Xiao_student.h"
应该就可以了
77_avatar_middle
最佳答案
31 
online_vip 发表于 2020-4-8 16:36:08 | 显示全部楼层
不能重复包含,但也不能不包含啊。。。未定义基类的问题很迷糊
94_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-4-8 18:09:04 | 显示全部楼层
Health 发表于 2020-4-8 16:36
不能重复包含,但也不能不包含啊。。。

有何良策,速速告我。
94_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-4-8 18:11:26 | 显示全部楼层
Health 发表于 2020-4-8 16:36
不能重复包含,但也不能不包含啊。。。

也试着在Xiao_student的H文件里#include "CStudent.h",在Zhong_student中#include "Xiao_student.h",仍然会出现未定义基类的错误提示。
很是困惑。
57_avatar_middle
最佳答案
25 
在线会员 发表于 2020-4-9 18:27:48 | 显示全部楼层
解决头文件重复包含C/C++中有两种方式,一种是#ifndef方式,一种是#pragma once方式。
&#160;方式一:例如头文件 Xiao_student.h,注意不同的头文件使用不同的宏定义,也就是下面代码中的__XIAO_STUDENT_H__
&#160;&#160;#ifndef&#160;__XIAO_STUDENT_H__
&#160;&#160;#define&#160;__XIAO_STUDENT_H__
//头文件内容
&#160;&#160;#endif //__XIAO_STUDENT_H__
&#160;&#160;方式二,在头文件顶部添加:
&#160;&#160;#pragma&#160;once
新手的话建议使用第二种,简单暴力
57_avatar_middle
最佳答案
25 
在线会员 发表于 2020-4-9 18:31:09 | 显示全部楼层
不好意思,楼上的乱码了。为了避免头文件重复引用,可以直接在每个头文件顶部添加:#pragma once
94_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-4-14 09:39:48 | 显示全部楼层
JLDawson 发表于 2020-4-9 18:31
不好意思,楼上的乱码了。为了避免头文件重复引用,可以直接在每个头文件顶部添加:#pragma once

感谢,这个问题让我倍受挫折,五天没动C++,再到VC驿站来看看,我试着在小学生头文件、中学生头文件中加入#pragma once,调试了一下,成功通过,没有错误。
感谢,有的时候,用右键生成类的办法生成的文件中,会有一行#pragma once,不明白其作用的我有时就删除了。
感谢解答 。
57_avatar_middle
最佳答案
25 
在线会员 发表于 2020-4-14 09:44:13 | 显示全部楼层
ioulex 发表于 2020-4-14 09:39
感谢,这个问题让我倍受挫折,五天没动C++,再到VC驿站来看看,我试着在小学生头文件、中学生头文件中加 ...

你可以百度:避免头文件重复定义 。查看问题的根本原因,巩固一下知识
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-10-1 04:36

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表