我知道这是一个常见问题,但我仍然设法找到解决方案。
我创建了一个名为location的结构路径数组
路径location[numLevels*levelSize];
我也在使用一堆名为start的路径。
问题是将数组中的正确位置传递给函数,让它创建一个放入数组的新路径,而不是将其发回。
bool moveLocationStack(const vector <vector<path> > &spaceStation,const int x,const int y,path *square){
char c=spaceStation.at(y).at(x).type;
if(c!='#'){
if(!spaceStation.at(y).at(x).visit and !spaceStation.at(y).at(x).inPath)
square->type=spaceStation.at(y).at(x).type;
square->type=spaceStation.at(y).at(x).visit;
square->type=spaceStation.at(y).at(x).inPath;
square->type=spaceStation.at(y).at(x).level;
return 1;
}
return 0;
}
指针方块应指向函数调用发送给它的数组的下一个位置 我试着成为:
if(moveLocationStack(spaceStation,possibleX,possibleY,location[currentLocation])){
}
它有一个问题,即发送我希望指向由代码currentLocation中其他地方的变量索引的特定数组部分。如果我只是写位置它可以工作,但我很确定它不会指向每次调用时数组中的下一个可用空间,即使我增加currentLocations。
有什么方法可以解释这个,所以我能理解错误吗?
答案 0 :(得分:1)
我很难理解这个问题,但我可以看出这是错误的
if(moveLocationStack(spaceStation,possibleX,possibleY,location[currentLocation])){
你的意思是
if(moveLocationStack(spaceStation,possibleX,possibleY,&location[currentLocation])){
您要将地址传递给moveLocationStack
,因此您应使用&location[currentLocation]
而不是location[currentLocation]
。
这似乎也是错误的
square->type=spaceStation.at(y).at(x).type;
square->type=spaceStation.at(y).at(x).visit;
square->type=spaceStation.at(y).at(x).inPath;
square->type=spaceStation.at(y).at(x).level;
肯定你的意思是
square->type=spaceStation.at(y).at(x).type;
square->visit=spaceStation.at(y).at(x).visit;
square->inPath=spaceStation.at(y).at(x).inPath;
square->level=spaceStation.at(y).at(x).level;
或者可能(假设square
是path*
)这个
*square = spaceStation.at(y).at(x);
您可以一次复制结构,也不必单独复制结构中的每个项目。