我正在一个执行大量继承的框架中工作,我发现一个基类的Natvis会干扰另一个基类。
这是一个愚蠢的例子:
class MainBase {};
class ExtraBase {};
class Derived: MainBase, ExtraBase {};
用这个natvis:
<Type Name="MainBase">
<Expand>
<Item Name="MainBaseItem">23</Item>
</Expand>
</Type>
<Type Name="ExtraBase">
<Expand>
<Item Name="ExtraBaseItem">42</Item>
</Expand>
</Type>
......我明白了: https://i.stack.imgur.com/0dMNu.png
MainBaseItem的扩展已经很好了,但ExtraBaseItem的扩展无处可见。
在我的实际案例中,MainBase等效的natvis非常重要,所以我无法通过添加 Inheritable =“false”来解决问题。为派生类本身添加专门的natvis也是不切实际的 - 有数千个派生类。鉴于这些无用的约束,我可以做些什么让ExtraBaseItem出现?
答案 0 :(得分:0)
<Type Name="ExtraBase">
<Expand>
<!-- Example of hierarchical class shown below-->
<Item Name="MainBaseItem [base]">(MainBaseItem*)this</Item>
</Expand>
</Type>
Idk,如果我了解正确的话....