저는 벡터에있는 모든 객체를 저장하고 변경하는 것을 다루는 Level 클래스가있는 게임을 만들고 있습니다.C++ 클래스가 const 클래스의 다른 클래스의 private 멤버에 액세스하는 방법 (읽기 전용이 아닌 경우에만 쓰기)
그리고 Vector.h에 기반한 것들을 계산하는 정적 함수를 가진 Engine.h라는 또 다른 클래스가 있지만 그 안에는 아무 것도 변경하지 않습니다. Level은 Engine 함수를 호출하고 반환 된 내용을 기반으로 연산을 수행합니다.
하지만 Engine에서 Level이 소유하고있는 벡터를 확인해야하므로 벡터의 현재 상태를 기반으로 계산할 수 있도록 벡터의 포인터 (const)를 각 Engine 함수에 전달해야합니다. .
엔진이 모든 Level의 멤버 변수에 액세스 할 수있게 해주는 방법은 없지만 그 중 하나를 편집 할 수는 없습니다. 어떤 종류의 'const friend'?
방금 객체 수준이 있다는 것을 깨달았습니다. 그래서 엔진에 'const 친구'가 될 수있는 수준의 특정 객체를 할당해야합니다. ' 아마도 이것은 복잡해질 수 있습니다. 해결책이 없다면 Engine 함수에 많은 멤버 변수를 전달하는 나쁜 습관이거나 이것이 어떻게 수행되는지입니다. Level에 대한 포인터를 const로 전달하면 어떻게됩니까? 그 또한 레벨 멤버 변수의 CONST의 모든을?)
는'friend'는'const'를 오버라이드 (override)하지 않는, 그래서 친구가 클래스에'const를 레벨 *를'통과/기능을 제공합니다 읽기 전용. –
'나는 각 엔진 함수에 벡터의 포인터 (const) 묶음을 강제로 전달합니다 .' 그리고 왜 const 멤버 함수를 통해 해당 벡터를 노출시킬 수 없습니까? –