【问题标题】:Natvis with multiple base classes具有多个基类的 Natvis
【发布时间】:2018-05-15 11:21:21
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:
    <Type Name="ExtraBase">
      <Expand>
        <!-- Example of hierarchical class shown below-->
        <Item Name="MainBaseItem [base]">(MainBaseItem*)this</Item>
      </Expand>
    </Type>
    

    如果我理解正确的话,我想......

    【讨论】:

    • 我的问题不是很清楚——在我的示例中,ExtraBaseItem 42 行代表了我想让其可见的 ExtraBase 的一些重要属性。我已经编辑了这个问题,希望让它更清楚一点。
    猜你喜欢
    • 1970-01-01
    • 2019-12-26
    • 2022-01-12
    • 2021-07-09
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    相关资源
    最近更新 更多