我有一个治疗父母班,两个孩子,内在治疗和外治疗。我需要创建一个包含两个子节点的链表。我不允许使用模板或内置列表。
我面临的问题是next
ptr的类型,我找到的唯一解决方案是创建基节点父类型,并将两个子项放在其中,加上一个类型变量知道它是哪种节点。像这样:
enum node_type = {inner, outer};
struct treatment_node{
Inner_Treatment t1;
Outer_treatment t2;
struct treatment_node *next;
node_type treatment_type;
}
我根据治疗类型知道要访问哪个类。这会有用吗?
答案 0 :(得分:1)
随着多态性的发展,您可以使用与问题中相同的措辞,但对“基础”一词使用不同的含义。因此,您可以创建一个base
治疗类并从中继承您的内部和外部类:
class treatment_node {
treatment_node *next;
public:
virtual std::string getTreatment() = 0;
...
};
现在你的外在和内在:
class Outer_treatment : public treatment_node {
... members ...
public:
std::string getTreatement() override {...}
};
};
class Inner_treatment : public treatment_node {
... members ...
public:
std::string getTreatement() override {...}
};
现在您可以将两者放在treatement_nodes
列表中。