C++ 类到 C# 类的转换

Posted

技术标签:

【中文标题】C++ 类到 C# 类的转换【英文标题】:Conversion of C++ class to C# class 【发布时间】:2015-03-10 04:09:13 【问题描述】:

我有一个奇怪的 C++ 类,如下所示。我想用 C# 写这个类的等价,但我遇到了麻烦。

class Map
  
public:

    class Cell
    
        public:

            class Hash : public unary_function<Cell*, size_t>
            
                public:

                    static const int C;
                    size_t operator()(Cell* c) const;
            ;

            static const unsigned int NUM_NBRS;
            static const double COST_UNWALKABLE;
            double cost;
            Cell(unsigned int x, unsigned int y, double cost = 1.0);
            ~Cell();
            void init(Cell** nbrs);
            Cell** nbrs();
            unsigned int x();
            unsigned int y();

        protected:
            bool _init;
            Cell** _nbrs;
            unsigned int _x;
            unsigned int _y;
    ;

    Map(unsigned int rows, unsigned int cols);
    ~Map();
    Cell* operator()(const unsigned int row, const unsigned int col);
    unsigned int cols();
    bool has(unsigned int row, unsigned int col);
    unsigned int rows();

protected:

    Cell*** _cells;
    unsigned int _cols;
    unsigned int _rows;
;  

如何转换成C#?特别是我对继承unary_function的Hash类感到困惑@

【问题讨论】:

[这里]***.com/q/21059950/3110262 你可以了解一些关于编组的想法 其实他们不是同一个问题。大多数情况下,由于一元函数,我在转换内部 Hash 类时遇到了麻烦。 你想要 C++ 和 C# 代码之间的某种互操作性,还是只是想用 C# 重写你的东西? 你不能,真的。 C# 和 C++ 之间存在差异。 只是我想重写。 【参考方案1】:

这样不行,你最好只使用c++代码作为需求描述。

如果这不是一个选项,那么我只能为您提供以下提示:

// have a create function for you Hash object (I'm trying to simplify here)
public class Hash

  static const int C= 1234;
  public static Func<Cell, int> CreateHashObject()
  
    Func<Cell, int> hashObj= (cl)=>return cl.GetHashCode() + C;;  // just a dummy implementation to show that you can save a copy of C in the created object.
    return hashObj;
  


// and then wherever you need to create a Hash object
var myHashObject= Hash.CreateHashObject();

【讨论】:

以上是关于C++ 类到 C# 类的转换的主要内容,如果未能解决你的问题,请参考以下文章

QObject 基类到继承对象的 C++ 类型转换

从基类到派生类的静态转换后找不到成员函数

从基类到不同派生类的多重继承转换

C# 类到 Json e6 类

从父类到子类的类型转换

从嵌套类到包含类的 C# 成员访问 [重复]