gpt4 book ai didi

c++ - 使用基类和派生类创建链表

转载 作者:太空宇宙 更新时间:2023-11-04 11:50:22 25 4
gpt4 key购买 nike

如何使用基类和派生类创建链表

例如:

class Base { 
int id;
Base *next;
};
class Derived : public Base {
string name;
};

Base *list = NULL;

Base *b = new Base();
b->next = list;
list = b;

Derived *d = new Derived();
d->next = list;
list = d;

Base *itr = list;
while(itr) {
if(typeid(Base) == typeid(*itr)) {
cout << "Base: " << itr->id << endl;
} else {
cout << "Derived: " << itr->id << " and " << itr->name << endl;
}
itr = itr->next;
}

我的方法行不通!有什么建议吗?

最佳答案

几个问题:

  • 字段是私有(private)的
  • 您必须在 else 中强制转换为 Derived 才能使用 name();

可能比检查 typeid 更好的解决方案是定义一个返回字符串表示形式的虚函数并在 Derived 中覆盖它。

关于c++ - 使用基类和派生类创建链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18598296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com