在C++中实现图形节点时将 C# 类转换为C++

本文关键字:C++ 转换 节点 实现 图形 | 更新日期: 2023-09-27 18:26:00

private class Node
 {
    public int Value;
    public Node[] ChildNodes;
    public bool Selected;
 }

类节点包含一个节点数组。

在C++中实现图形节点时将 C# 类转换为C++

我的C++很生疏。在我们处理编码之前,您需要了解一些事项。

类不能直接使用访问修饰符,如publicprotectedprivateC++。这意味着我们已经在Nested Class遇到了问题。

您可以使用#pragma once来绕过它

这带来了(伪(代码:

class Outer 
{
    private:
        class Node
        {
            public:
        }
};

然后,我们必须添加字段,通常(至少习惯于(在变量名称使用前缀C++,就像在 C# 中大写字段一样。

int     mValue;
Node*   mNodes;
bool    mSelected;

这就把我们带到了最后一堂课:

外.H

#ifndef OUTER_H
#define OUTER_H
class Outer 
{
    private:
        class Node
        {
            public:
                int     mValue;
                Node*   mNodes;
                bool    mSelected;
        }
};
#endif

更多"包括守卫"可以在这里阅读。在某些环境中,您可以使用CC_7代替警卫。

我希望这能让你开始。此代码尚未经过测试。

这是一个XYZ问题,我们不知道出于什么原因你想用C++而不是C#编写它。与C++一起工作可能会很麻烦。我还(在这两种情况下(建议在 C# 中使用 List a Vector in C++而不是 Array。

首先,C# 中的私有类必须包含在外部类型中,因此我们可以假设此类型已经嵌套(即,C# 和 C++ 都不允许在命名空间级别使用私有类(。接下来,使用 std::vector 而不是实际数组要容易得多:

#include <vector>
//class Outer { - your existing outer class
    class Node
    {
    public:
        int Value = 0;
        std::vector<Node*> ChildNodes;
        bool Selected = false;
    };
//}; - end of your existing outer class