如何解决操作员在创建此2D节点阵列时是否遇到问题?
所以我试图创建一个2D数组,我是C ++的新手,所以我有点困惑,我知道我使用了太多新的运算符,但我不知道要保留哪个。而且我不确定该如何处理操作员错误。
节点类-
class Node
{
public:
int name;
Node *topedge;
Node *bottomedge;
Node *leftedge;
Node *rightedge;
};
主要
#include <iostream>
#include <node.h>
#include <cstdlib>
using namespace std;
int main(void)
{
Node* grid = new Node[10][10]; //error here
//populate grid
int h = 0;
for ( int j = 0; j < 10; j++ ){
for ( int i = 0; i < 10; i++ ){
grid[j][i] = new Node(); //error here
grid[j][i]->name = h; //error here
h++;
}
}
for ( int j = 0; j < 10; j++ ){
for ( int i = 0; i < 10; i++ ){
cout << grid[j][i]->name << '('<< j << ',' << i << ')' << endl;
}
}
return 1;
}
以下是我在运行它时遇到的错误
main.cpp: In function ‘int main()’:
main.cpp:10:33: error: cannot convert ‘Node (*)[10]’ to ‘Node*’ in initialization
Node* grid = new Node[10][10];
^
main.cpp:17:14: error: no match for ‘operator[]’ (operand types are ‘Node’ and ‘int’)
grid[j][i] = new Node();
^
main.cpp:18:14: error: no match for ‘operator[]’ (operand types are ‘Node’ and ‘int’)
grid[j][i]->name = h;
^
main.cpp:25:22: error: no match for ‘operator[]’ (operand types are ‘Node’ and ‘int’)
cout << grid[j][i]->name << '('<< j << ',' << i << ')' << endl;
^
<builtin>: recipe for target 'main.o' failed
解决方法
首先定义您的课程Node
,然后
试试这个
Node** grid = new Node*[10];
for(int i = 0; i < 10; ++i)
grid[i] = new Node[10];
,
带有null
的示例示例。在我认为有需要的地方插入了解释性评论。
std::array
推荐阅读:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。