Я имею класса А в качестве базового класса, и класс В, С производные классы от А и есть класс D, у кого элемента данных (указатель на массив) типа А (композиции)массив объектов и наследование
enter code here
class D{
A **a;
int size;
.......
a = new A*[size];
......
};
и у меня есть метод печати. В его теле есть определенный элемент (если он из класса B или C) с заданным идентификатором (оба B и C имеют идентификатор элемента данных) должно быть два варианта печати функции .. элементы печати для класса B или элементы печати для класса C? Как я могу определить конкретные элементы?
Я сделал класс A абстрактным !!
enter code here
class A{
.......
virtual void print()=0;
};
class B :public A{
........
........
void print(){
.......}
};
класс С: публике { ........ ........ недействительным печати() { .......} };
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 ???
что это значит идентификатор класса? –
Вы должны действительно избегать необработанного распределения массивов. Вместо этого используйте 'std :: vector'. – Sean
@ richard.g Это элемент данных как в классе B, C! I должен был получить его от пользователя, а затем указать его (из класса B или C)? –