노동 조합은 내가 자주 사용해온 것이 아니며 여기에 몇 가지 다른 질문을 한 후 작동하지 않을 수있는 거의 항상주의해야 할 것처럼 보입니다. 예 : 구조체에 예상치 못한 패딩 또는 엔디안 차이가있을 수 있습니다.이 매트릭스 클래스에서 유니온의 사용은 완전히 안전합니까?
전 수학 라이브러리에서이 문제가 발생했습니다. 사용하고 있으며 완전히 안전한 사용인지 궁금합니다. 다차원 배열에는 여분의 패딩이 없으며 유형이 두 정의에서 모두 동일하므로 정확히 동일한 양의 메모리를 차지할 것이라고 가정합니다.
template<typename T> class Matrix44T
{
...
union
{
T M[16];
T m[4][4];
} m;
};
이 설정에는 단점이 있습니까? 정의의 순서가 어떻게 작동하는지에 차이가 있습니까?
@ Andreas - 표준 정의에 감사드립니다. 그래서 절대적으로 작동하도록 보장 된 유일한 유형은 동일한 유형의 내용이지만 이름이 다른 두 개의 구조체 일 것입니다. – identitycrisisuk
@identitycrisisuk 한마디 : 예. –
그러나 해결책이 있습니다. * T 형식의 M [0] [0] (즉, m [0] [0]) 포인터를 취하여 M 대신에 포인터를 사용할 수 있습니다. – Ingo