c# - 将一些 C++ 数组代码转换为 C#

标签 c# c++

由于指针的原因,我在将以下代码从 C++ 转换为 C# 时遇到了一些问题。

基本上我有一个

STATE** State;
States = new STATE* [max_states];

for (int i=0; i < max_states; i++) {
  States[i] = new STATE(max_symbols);
}

如果这是双数组我会说

STATE[][]  States;  
States = new STATE[max_states][];

for (int i = 0; i '<' max_states; i++) {
    States[i] = new STATE[max_symbols];
}

但问题是 C++ 代码没有像我预期的那样工作。

States[i] = new STATE(max_symbols);

有一些奇怪的行为,例如允许

States[cur_state]->set_recur_out(k);

我到底没看到什么?这可能是一个初学者 c++ 问题。对不起,如果我没有任何意义 =)

最佳答案

它不是二维数组,而是包含指向单个元素的指针的一维数组...
new STATE(max_symbols) 构造单个 STATE 对象,调用采用单个参数(在本例中为 max_symbols)的构造函数。

我对 C# 没有太多了解,但以下应该是 C# 中 C++ 代码的正确表示:

STATE[]  States;  
States = new STATE[max_states];

for (int i = 0; i '<' max_states; i++) {
    States[i] = new STATE(max_symbols);
}

关于c# - 将一些 C++ 数组代码转换为 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4359202/

相关文章:

c# - 多个 WCF Web 服务的异步调用

c# - 两个值之间的距离

c++ - std::cout 未正确打印由 unsigned char 数组的 reinterpret_cast 创建的 std::string

c++ - 如何在 c 函数中创建一个新对象并将引用传递给它?

c++ - 如何授予用户对网络服务的权限

c# - 如何解析 JSON 对象

c# - 如何将相同的查询应用于不同的实体?

c++ - 在我自己的程序中读取 .vtu 文件

c++ - 静态与动态数组 C++

c# - 如何让Windows服务启动为 "Automatic (Delayed Start)"