C++ 概念释疑

二两就醉 2010-04-04 07:24:28
#include <iostream>

using namespace std;

class claA
{
public:
typedef struct dataInfo
{
int index;
char value[128];
} dataInfo,*pdataInfo;
claA()
{
head =(pdataInfo)malloc(sizeof(dataInfo));
head->index=1;strcpy(head->value,"asd");
}
pdataInfo head;
};
class claAA : public claA
{
public:
typedef struct dataInfo
{
int index;
char value[128];
char attribute_claAA[128];
} dataInfo,*pdataInfo;
claAA()
{
head =(pdataInfo)malloc(sizeof(dataInfo));
head->index=1;strcpy(head->value,"asd");strcpy(head->attribute_claAA,"claAA");
}
pdataInfo head;
};
class claBB : public claA
{
public:
typedef struct dataInfo
{
int index;
char value[128];
char attribute_claBB[128];
} dataInfo,*pdataInfo;
claBB()
{
head =(pdataInfo)malloc(sizeof(dataInfo));
head->index=1;strcpy(head->value,"asd");strcpy(head->attribute_claBB,"claBB");
}
pdataInfo head;
};
class claCC : public claA
{
public:
typedef struct dataInfo
{
int index;
char value[128];
char attribute_claCC[128];
} dataInfo,*pdataInfo;
claCC()
{
head =(pdataInfo)malloc(sizeof(dataInfo));
head->index=1;strcpy(head->value,"asd");strcpy(head->attribute_claCC,"claCC");
}
pdataInfo head;
};

int check(claA a,claA aa,claA bb,claA cc);

int main()
{
claA a;
claAA aa;
claBB bb;
claCC cc;

check(a,aa,bb,cc); // 调用是OK的(注意:传进来的是继承后的类对象!)
return 1;
}

int check(claA a,claA aa,claA bb,claA cc)//此处传进来的是claA,但是想调用claAA、claBB、claCC中的结构体的数据!
{
printf("claA:%s\n",a.head->value);
//printf("claAA:%s\n",aa.head.attribute_claAA); // 此处不能调用,如何作才能够调用到claAA中head结构体的数据?
//printf("claBB:%s\n",bb.head.attribute_claBB); // 此处不能调用,如何作才能够调用到claAA中head结构体的数据?
//printf("claCC:%s\n",cc.head.attribute_claCC); // 此处不能调用,如何作才能够调用到claAA中head结构体的数据?
return 0;
}
...全文
162 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
GrayMole2010 2010-04-04
  • 打赏
  • 举报
回复
int check(claA a,claA aa,claA bb,claA cc);

这里使用变量,尽量传进来的派生类的对象,也被截断成为基类的对象。
请使用指针或者引用。
二两就醉 2010-04-04
  • 打赏
  • 举报
回复
就是有基类claA,子类claAA、claBB、claBB、claCC均继承自该基类;
各个类中均存在名为dataInfo的结构体。
现在想些个函数,传入的参数定义为claA,但是实际上传入的是claAA、claBB、claBB、claCC的对象(当然,也有可能是继承自claA的其他的类);需要访问各自的类定义的结构体数据。

请各位出谋划策!

64,281

社区成员

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

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