我在int costMap[20][20];
课程中有一个dialog
。
在该类中,我正在从另一个名为pathFind
int costMap[20][20];
//costMap is filled with values (that represent the cost for each node -> pathFinder)
int (*firstElement)[20] = costMap;
pathFind *finder = new pathFind(*firstElement);
我希望能够访问pathFind
类
int (*costMap)[20];
pathFind::pathFind(int *map){
costMap = ↦
}
然而,这似乎不起作用。我得到一个“无法将int **转换为int(*)[20]错误。
问题:如何通过另一个类中的指针访问多维数组的元素
答案 0 :(得分:1)
你必须写
pathFind::pathFind(int (*map)[20]){ ... }
但这是 C ++ 你可能会发现这更好:
template< std::size_t N, std::size_t M >
pathFind::pathFind(int (&map)[N][M]){ ... }
答案 1 :(得分:1)
pathFind::pathFind(int *map){
这需要一个指向整数的指针。
在其他地方,您已经发现了正确的类型:
pathFind::pathFind(int (*map)[20]){
尽量避免使用这个指针hackery。
答案 2 :(得分:1)
你应该这样做:
pathFind::pathFind(int (*map)[20] ){
costMap = map;
}
即匹配类型!
另请注意,T (*)[N]
和T**
不是兼容类型。一个人无法转换为其他人。在您的代码中,您正在尝试这样做,这就是错误消息告诉您的内容。
此外,您的代码还有其他问题,例如您应该避免使用new
和原始指针。使用标准库中的std::vector
或其他容器,当您需要指针时,请使用std::unique_ptr
或std::shared_ptr
,以满足您的需要。