기본 질문은 누구나 C++에서이 방법을 알고 있습니까? Class 2는 Class1의 하위 클래스이며 그대로 유지해야합니다.C++ 포인터 캐스트 오버로드
Class1* a;
Class2* b = (Class2*)a;
basically allowing you
Class1* a;
Class2* b = a;
// tried this but didn't seem to work
class Class1
{
operator Class2*() { return (Class2*)this; }
}
지연된 질문/복제물이지만 내 주변에서 내 머리를 얻지 못하면 정말 미안합니다. someoen이 비슷한 물건을 가지고 있다면 감사하겠습니다.
편집 : 몇 가지 추가 정보 클래스 1 =없는 baseclass 예를 들어 플레이어 Class2의 = 서브 클래스 예를 들어 무기 클래스 1은
플레이어가 무기 에 대한 포인터를 가지고 기원처럼 같은 값을 가지고있는 서브 클래스에 대한 포인터를 보유하고
기본적으로 내가 뭘 원하는
GetEntity이 형 플레이어의 포인터를 반환합니다 (그러나 반환 값은 무기가 될 수 있음)
기본적으로 이제 캐스팅하지 않고 캐스팅 과정을 자동화하여
Player* p = GetEntity(0);
Player* p2 = GetEntity(1);
Weapon wpn = (Weapon*)p2;
//so that you are able to do
Weapon wpn = p2;
// Also that Stuff like that would be possible
void Test(Weapon *wpn);
Player *player = GetEntity(1);
// Yes I know this works Test((Weapon*)player) but I am lazy and that's the goal
Test(player);
등의 작업을 자동화하고 싶습니다.
공용 상속 ... – StoryTeller
Class1의 Class2를 상속하더라도 자동화 할 포인터를 계속 캐스팅해야합니다. – Shizo
아니요, 당신은'Class1'을'Class2'에서 상속받습니다 ... 당신이 어떤 * is-a * 관계인지를 결정하십시오. – StoryTeller