n*****u 发帖数: 198 | 1 class CBASE{
protected:
int a;
public:
int b;
xxxxx
};
CDERIVED1, CDERIVED2都从CBASE继承过来
有一个function希望对所有的CBASE的b操作,
void function( CBASE* p , int size){
for(int k=0; k
p[k].b = xxxxxx;
}
}
main()
{
CBASE *p0 = new CBASE[size0];
CBASE *p1 = new CDERIVED1[size1];
CBASE *p2 = new CDERIVED2[size2];
function ( p0,size0);
function ( p1,size1);
function (p2,size2);
只有第一个call是正确的,后面两个因为derived class又定义了其他成员,用CBASE*
的pointer好像会出错。。。有什么办法可以让fu |
t****t 发帖数: 6806 | 2 you can't mix array and polymorphism
【在 n*****u 的大作中提到】 : class CBASE{ : protected: : int a; : public: : int b; : xxxxx : }; : CDERIVED1, CDERIVED2都从CBASE继承过来 : 有一个function希望对所有的CBASE的b操作, : void function( CBASE* p , int size){
|
n*****u 发帖数: 198 | 3 thanks...那又要想array 又想polymorphism就没有办法了?
【在 t****t 的大作中提到】 : you can't mix array and polymorphism
|
q*****g 发帖数: 72 | 4 use vector instead
【在 n*****u 的大作中提到】 : thanks...那又要想array 又想polymorphism就没有办法了?
|
s*******d 发帖数: 59 | 5 base ** p;
p = new base*[?];
or use container? |