构建C+的细节+;调试中的类 如何增强C++类所显示的调试信息?具体来说,让我们看看vector类:它的顶级视图只包含其大小变量(图中为1),而扩展视图将其元素逐个显示为参数(图中为2)

构建C+的细节+;调试中的类 如何增强C++类所显示的调试信息?具体来说,让我们看看vector类:它的顶级视图只包含其大小变量(图中为1),而扩展视图将其元素逐个显示为参数(图中为2),c++,class,debugging,cross-platform,c++17,C++,Class,Debugging,Cross Platform,C++17,如何控制顶层摘要中显示的内容以及子级摘要中显示的内容?是否有某些设计模式可以实现这一点? 编辑:是否有跨平台解决方案?在Linux下适用于CLion、VS on Win、CMake等的软件。 一个复制向量行为的小型工作示例将非常有用(如果不需要复制实际向量类的复杂性质也可以实现的话) 比如说,我尝试写一个类,如下所示 template <class T> class Vector { public: Vector(size_t size) : size(size)

如何控制顶层摘要中显示的内容以及子级摘要中显示的内容?是否有某些设计模式可以实现这一点?

编辑:是否有跨平台解决方案?在Linux下适用于CLion、VS on Win、CMake等的软件。

一个复制向量行为的小型工作示例将非常有用(如果不需要复制实际向量类的复杂性质也可以实现的话)


比如说,我尝试写一个类,如下所示

template <class T> class Vector
{
public:
    Vector(size_t size) : size(size)
    {
        buffer = new T[size];
        for (size_t i = 0; i < size; ++i)
            buffer[i] = T();
    }

    ~Vector()
    {
        if (buffer != NULL)
            delete[]buffer;
    }

    T operator[](const size_t& idx) { /* ... */ }

private:
    size_t size;
    T* buffer;
};
模板类向量
{
公众:
向量(大小):大小(大小)
{
缓冲区=新的T[大小];
对于(大小i=0;i
然后,调试器只向我显示了这一点(正如我们在查看类的结构时所期望的那样):

您可以创建Natvis可视化。详细信息太长,无法在此处查看,但请参阅Microsoft文档以了解如何创建它们。

谢谢!这种方法的可移植性如何?如果我包含一个natvis file for me类来与Win上的VS一起工作,Linux上的CLion也能找到这个吗?我想你的链接会转到父页面,而你想链接到它。@m我确实想要另一个链接。我最初复制了父页面,看到下一个页面更好,显然没有复制那个链接。答案中的链接已修复。请注意,CMake不是一个IDE,而是一个构建系统。它根本无法可视化变量,因此natvis支持甚至没有意义。@MSalters理解,但我的问题是,如何将natvis文件(或其他文件)包含到CMake项目中,以便在VS或CLion(或其他IDE)中打开CMake项目时,在类上获得相同的调试视图。或者我必须分别包含每个IDE的调试格式吗?