我有一个函数,在其中我用两个指针填充一个指针数组:
Vertex* MacePiece::getPositionOffset(int aDirection){
// returns Plate at Position aParent.myPlates[0]
BasePlate** theGroundPlate = this->getPlates();
Vertex* theOffset[] = {0,0};
switch(aDirection){
theOffset[0] = theGroundPlate[0]->getVertexAt(0); //A
theOffset[1] = theGroundPlate[0]->getVertexAt(1); //B
break;
}
return theOffset[0];
}
接下来,我将该指针与第一个元素的地址一起传递给另一个函数:
Vertex* theParentOffset = aParentPiece->getPositionOffset(aDirection);
theConnectingPiece->setPositionInMace(theParentOffset, aDirection);
在这里,我使用指向如下的元素:
void MacePiece::setPositionInMace(Vertex* aOffset, int aDirection){
// set groundplate position
updateGroundPlatePositionByOffsetVertex(aOffset, aDirection);
}
void MacePiece::updateGroundPlatePositionByOffsetVertex(Vertex* aOffset, int aDirection) {
BasePlate** thePlates = this->getPlates();
// first update GroundPlate's Position
Vertex* A = thePlates[0]->getVertexAt(0);
Vertex* B = thePlates[0]->getVertexAt(1);
Vertex* C = thePlates[0]->getVertexAt(2);
Vertex* D = thePlates[0]->getVertexAt(3);
switch(aDirection){
case MOVE_NORTH:
// still 3D thus 2D's y is 3D'z if camera is looking down Y
// Two Sides are connecting thus Some Plate locations are identical
// A.x defined by parent D.x
A->position[0] = aOffset[1].position[0];
// A.z defined by parent D.z
A->position[2] = aOffset[1].position[2];
//B.x defined by parent C.x
B->position[0] = aOffset[0].position[0];
//B.z defined by parent C.z
B->position[2] = aOffset[0].position[2];
// now set Opposit side (A->D, B->C), since moving north:
// x is the same
// z is reduced by -1 because OpenGL's Z is reducing to far-pane
D->position[0] = A->position[0];
D->position[2] = A->position[2] - 1.0f;
C->position[0] = B->position[0];
C->position[2] = B->position[2] - 1.0f;
break;
特别是这部分:
// A.x defined by parent D.x
A->position[0] = aOffset[1].position[0];
// A.z defined by parent D.z
A->position[2] = aOffset[1].position[2];
//B.x defined by parent C.x
B->position[0] = aOffset[0].position[0];
//B.z defined by parent C.z
B->position[2] = aOffset[0].position[2];
aOffset[1] 返回与 aOffset[0] 相同的结果
当我传递一个指向数组的**指针时,每个信息都会丢失。
我正在创造一种迷宫,但它只是在一个方向上失败了。传递该指针有什么问题?如何获得在 Offset[1] 中指向的 Right 元素?
它太讨厌了。
干杯克努特