0
포인터가 다른 경우에만 올바른 결과를 제공하는 포인터 전달을 사용하여 C 함수를 만들었습니다. 예를 들어 : C++ 함수가 다른 포인터 인수를 사용해야하는 이유는 무엇입니까?
dotransform()
void dotransform(Point *pout, const Point *pin, transform mat)
{
pout->x = mat[0][0] * pin->x + mat[1][0] * pin->y + mat[2][0] * pin->z + mat[3][0] * 1.0;
pout->y = mat[0][1] * pin->x + mat[1][1] * pin->y + mat[2][1] * pin->z + mat[3][1] * 1.0;
pout->z = mat[0][2] * pin->x + mat[1][2] * pin->y + mat[2][2] * pin->z + mat[3][2] * 1.0;
}
는 다음과 같이 호출 할 예정이다 : 그것은 단지 나를 데려
Point p;
dotransform(&p, &p, toWorldMat);
:
문제가//...
Transform toWorldMat;
Point local;
Point world;
dotransform(&world, &local, toWorldMat);
, 우리 팀의 누군가가 이런 식으로 호출 프로그램의 최종 출력이 왜 바뀌 었는지 알아보기 위해 1 주.
이 경우를 피하기 위해 이런 종류의 기능을 선언하는 가장 좋은 스타일은 무엇입니까? 나는 그것을 그렇게 쓰는 것이 잘못 되었습니까? 이미 직접 transform
객체를 전달하는 것처럼
하나의'Point' 매개 변수'pin' 만 보내고 그렇지 않으면 쓸모없는 함수 반환 값을 출력 결과로 사용하십시오. – WhozCraig
아마도 C++을 사용하고있을 것입니다.이 같은 간단한 예제에서는 포인터로 객체를 전달하지 마십시오. 참조로 전달하십시오. – Xirema