Natvis有多个基类

时间:2018-05-15 11:21:21

标签: visual-c++ visual-studio-2015 natvis

我正在一个执行大量继承的框架中工作,我发现一个基类的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

enter image description here

MainBaseItem的扩展已经很好了,但ExtraBaseItem的扩展无处可见。

在我的实际案例中,MainBase等效的natvis非常重要,所以我无法通过添加 Inheritable =“false”来解决问题。为派生类本身添加专门的natvis也是不切实际的 - 有数千个派生类。鉴于这些无用的约束,我可以做些什么让ExtraBaseItem出现?

1 个答案:

答案 0 :(得分:0)

<Type Name="ExtraBase">
  <Expand>
    <!-- Example of hierarchical class shown below-->
    <Item Name="MainBaseItem [base]">(MainBaseItem*)this</Item>
  </Expand>
</Type>

Idk,如果我了解正确的话....