【发布时间】:2014-01-09 10:52:07
【问题描述】:
我有 A 类作为基类, 和 Class B , C 从 A 派生的类 并且有一个类 D 有一个类型为 A(组合)的数据成员(指向数组的指针)
enter code here
class D{
A **a;
int size;
.......
a = new A*[size];
......
};
并且我有 Print 方法,在它的主体中我必须具有给定 ID 的特定元素(如果它来自 B 类或 C 类)(B 和 C 都有一个数据成员 ID)在 print 函数中应该有 2 个选项。 . B 类的打印元素,或 C 类的打印元素? 我怎样才能具体的元素?
我把A类抽象了!!
enter code here
class A{
.......
virtual void print ()=0;
};
class B :public A{
........
........
void print(){
.......}
};
C 类:公共 A{ ........... ........... 无效打印(){ .......} };
class D{
........
.......
void Print ()
int P;
cout<<" if you want to print class B elements enter 1 , or 2 for class C"<<endl;
cin>>P;
if(P==1){
dynamic_cast<B*>(*a)->print(); }
else
if (P== 2){
dynamic_cast<C*>(*a)->print(); }
我的问题是,如果它来自 B 类或 C 类,我如何指定元素???
【问题讨论】:
-
类 ID 是什么意思?
-
你真的应该避免数组的原始分配。请改用
std::vector。 -
@richard.g 它是 B 类、C 类中的数据成员!我应该从用户那里收到它然后指定它(从 B 类或 C 类)?
标签: c++ arrays class object inheritance