클래스와 float 포인터를 같은 의미로 사용하는 방법이 있는지 궁금합니다. 클래스는 기본적으로 double 형태의 배열 (고정 크기)입니다. 클래스 포인터가 있으면 해당 연산자를 사용하여 쉽게 float 포인터로 사용할 수 있지만 포인터가 있으면 자동으로 클래스로 사용하는 방법을 모르겠습니다.클래스를 float 포인터로 바꾸어 사용하십시오.
내 문제를 좀 더 설명하겠습니다. 나는 4 × 4 행렬을 보유 할 Matrix4x4의 형식 정의를 사용하고있다 :
typedef float Matrix4x4[16];
나는 float*
으로 Matrix4x4
을 기능의 많은 지금은 같은 방법으로 기본 클래스를 사용하는 것을 시도하고있다 I
bool test(void){
float H[16];
// ... process H
return isIdentidy( H); // I want the compiler to accept it this way
return isIdentidy((float*) H); // or this way
}
bool isIdentity(const Matrix4x4 matrix){
... (process)
return ...;
}
:이 같은 함수를 호출 할 때
class Matrix4x4 {
float matrix[16];
public:
Matrix4x4();
float operator[](int i){
return matrix[i];
}
operator float*() const{ // I can pass to functions that take a float*
return (float*) matrix;
}
};
문제는 남아 다음 Matrix4x4를 사용하는 데 사용3210
결국 포인터는 똑같아 야합니까? 내가 대신 float H[16]
의 Matrix4x4 H
로 H를 선언하는 경우
이 솔루션에 대해 감사드립니다. 그것은 매우 유용합니다. 그러나 나는 매트릭스를 많이 사용함에 따라 속도에 대해 상당히 염려합니다. 따라서'typeded float Matrix4x4 [16] '을 사용하여 기존 방법을 유지할 수 있습니다. 또한 포인터를 전달하여 변경하려고합니다. 포인터 만 저장하는 Matrix4x4 클래스 생성자를 변경하는 것이 가능할 것이라고 확신하지만 데이터를 저장하려면 너무 복잡해집니다 ... 어쨌든, 정말 고마워요! – Albert