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;
}