VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 798|回复: 2

[已解决]求组强制类型转换相关

[复制链接]
01_avatar_middle
最佳答案
0 
在线会员 发表于 2021-8-10 12:23:29 | 显示全部楼层 |阅读模式
跟着第41课敲代码的时候。视频上面说可以强制转换因为基类是XiaoStudent。
但我的63行编译的时候总是提示我无法进行该项转换。这是为啥啊?
#include<iostream>
#include<string>
using namespace std;

enum EStudentType
{
        EStudentType_erro = 0,
        EStudentType_xiao ,
        EStudentType_zhong
};
class Student
{
public:
        char* pname;
        char sex;
        int age;
        int num;
        Student() {};
        //~Student() {};
        EStudentType type;
};

class XiaoStudent :public Student
{
public:
        int yuwen;
        int shuxue;
        int yingyu;
        XiaoStudent()
        {
                type = EStudentType_xiao;
                 //shuxue = 50;
        }

};

class Zhongxue :public XiaoStudent
{
public:
        int wuli;
        int huaxue;
        Zhongxue()
        {
                type = EStudentType_zhong;

        }
};

int average_age(Student* p_arr_stud, int n_size)
{
        if (!p_arr_stud || n_size == 0)
                return 0;
        int age_sum = 0;
        EStudentType stud_type = p_arr_stud[0].type;
        for (int idx = 0; idx < n_size; ++idx)
        {
                switch (stud_type)
                {
                case EStudentType_xiao:
                        age_sum += ((XiaoStudent*)p_arr_stud)[idx].age;
                        break;
                case EStudentType_zhong:
                        age_sum += ((Zhongxue*)p_arr_stud[idx]).age;
                        break;
                default:
                        break;
                }
               
        }
        int ave_age = age_sum / n_size;
        switch (stud_type)
        {
        case EStudentType_xiao:
                cout << "当前小学生的平均年龄是:" <<ave_age<< endl;
                break;
        case EStudentType_zhong:
                cout << "当前中学生的平均年龄是:" << endl;
                break;
        }               
        return ave_age;
}

int main()
{
        XiaoStudent stud[3];
        stud[0].age = 20;
        stud[1].age = 20;
        stud[2].age = 60;
        average_age(stud, 3);
        return 0;
}
求组强制类型转换相关
最佳答案
31_avatar_small
2021-8-10 13:54:54
把63行代码改为:
  1. age_sum += ((Zhongxue*)p_arr_stud)[idx].age;
复制代码




上一篇:mfc怎么改变ICheckEditor的字体颜色
下一篇:为什么函数中形参是char *型
31_avatar_middle
最佳答案
62 
在线会员 发表于 2021-8-10 13:54:54 | 显示全部楼层    本楼为最佳答案   
bestAnswer
把63行代码改为:
  1. age_sum += ((Zhongxue*)p_arr_stud)[idx].age;
复制代码
01_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-8-10 15:11:32 | 显示全部楼层
cpp2019 发表于 2021-8-10 13:54
把63行代码改为:

谢谢大佬,我眼瞎了...
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

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

关闭

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

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

GMT+8, 2023-9-28 02:12

Powered by CcTry.CoM

© 2009-2021 cctry.com

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