Polymorphism
в декабре C, не работает со строкой
Я использую Dev C++ 5.9.2.
У меня есть родительский класс A
, класс B,C,D,E
..... extends A
и класс list
- это основной класс, в котором я использую B,C,D.
Я не использую родительский A
, потому что я хочу повторно использовать конструктор A.
Проблема в следующем
class A
{
public:
virtual void show(){
printf("A");
}
private:
string tokenS;
};
class B :public A
{
public:
virtual void show(){
printf("B:");
// return 0;
}
}
class list
{
public:
A* getNode(){
return pta;
}
void setNode(B temp){
this->pta=&temp;
}
protected:
private:
A *pt1;
};
int main(){
list ls;
B b1;
ls.setNode(b1);
ls.getNode()->show();
}
, если я использую string tokenS
результат: A
, если я использую char* tokenS
результат: B:
Я не понимаю этого, и если я создаю класс и использую его, у меня та же ошибка
class Date
{
// code
};
class A
{
public:
virtual void show(){
printf("A");
}
private:
Date day;
};
class B :public A
{
public:
virtual void show(){
printf("B:");
// return 0;
}
}