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# 类的转换的主要内容,如果未能解决你的问题,请参考以下文章