【发布时间】:2018-03-21 14:07:29
【问题描述】:
我有一个树结构,它是从Node 的派生类创建的。每个Node 都有指向它的父级的指针和一个虚函数Symbols()。这是一个简化的例子:
struct Node {
Node* parent;
virtual const SymbolTable& Symbols() { return parent->Symbols(); }
}
struct A : public Node {
}
struct B : public Node {
SymbolTable symbols;
const SymbolTable& Symbols() override { return symbols; }
}
所以在这个树形结构中,A 节点没有 SymbolTable 和 B 节点。我需要做的就是让Symbols() 方法首先返回当前节点上方的SymbolTable,但似乎B 中被覆盖的方法永远不会被调用。
【问题讨论】:
-
现在如果你有
A节点,这将结束。 -
好吧,我正在尝试整理一些最小的工作示例,但到目前为止,它的工作原理与我期望它在我的完整程序中工作一样。
-
@MarošBeťko 那么您可能正在对部分破坏的实例调用此函数,例如来自析构函数。
-
别忘了添加虚拟析构函数
标签: c++ polymorphism