대학 과정에 대한 과제를 수행하고 있으며 나와 파트너에게 문제가 있습니다. 우리가 만들고있는 프로그램은 게임입니다.부모 클래스를 사용하는 동안 하위 기능에 액세스
우리는 모든 클래스가 Creature라는 기본 클래스에서 상속받습니다. 이들은 플레이어가 처리해야하는 모든 적이며 그들 모두는 자신의 AI를 실행합니다. 네임 스페이스 Creature (부모, Creature 포함) 내에 네 가지 유형의 하위 클래스가 있으며, 하나의 클래스에는 필요한 특수 기능 만 있습니다. 이 클래스는 Bunny라고합니다.
이제 제 일은 필요에 따라 AI 기능을 호출하는 것입니다. 문제는, 나는 항상 모른다. 무엇이 클래스이다. 게임 보드에게 내가 얻은 생물이 무엇인지를 물어볼 때.
모든 원수는 게임 보드 사각형에서, 그래서 같은 포인터로 저장됩니다 : 우리는 특별한 기능에 액세스해야 할 때까지
struct Square
{
// Pointers to Morso class, where the enemy is saved
Creature::Creature* creature;
//Undeeded stuff removed
};
지금,이 모든 미세이다. Pupu는 특정 조건이 충족되면 증식합니다. 따라서 Pupu에서는 제대로 작동하는지 확인하기 위해 필요한 몇 가지 기능이 있습니다.
그러나 여기에 문제가 있습니다.
저는 보드 클래스를 호출하여 제가 제시 한 좌표에있는 생물을 알려줍니다. 이제
void GameEngine::GameEngine::runAI()
{
Creature::Creature* creature= NULL;
for(unsigned int y = 0; y < dimY; y++)
{
for(unsigned int x = 0; x < dimX; x++)
{
Coordinate target;
target.setX(x);
target.setY(y);
creature= board_->returnCreature(target);
//If there is a creature in the target, run its AI
if(creature!= NULL)
{
//If it is, check special procedures
if(creature->returnType() == "bunny")
{
bunnyReproduce(creature);
}
creature->ai();
}
}//for x
}//for y
}
:
void GameEngine::GameEngine::bunnyReproduce(Ccreature::Creature* creature)
{
//Checks that it really is a bunny
if(creature->returnType() != "bunny"){ return; }
//Check is there another bunny near
creature->checkForMate();
}
문제는, 생물,이 시점에서, 공공 버니의 멤버가 아닌 생물이다 checkForMate을 위해 호출 할 수있다. 우리가 가상 기능을 Creature에 만들어야합니까?
checkForMate를 Creature :: Bunny에 넣으려고했으나 원래 값으로 부여하려고 했으므로 Creature 클래스가 아닙니다. 그렇게 할 수 없습니다. Creature 클래스에 빈 가상 함수를 만들고 Bunnyclass를 오버라이드 (override)해야합니까?
Qt 5.0.2와 함께 Qt Creator 2.7.0을 실행 중입니다.
출처의 주석과 식별자는 일반적으로 일반 영어 여야합니다. 조만간 소스 *가 "국제"(예 : 여기)와 같기 때문입니다. – DevSolar
음, 이름을 빨리 바꿀 수 있기 때문에 읽기가 더 쉬워야합니다. 그냥 확인 – Mandemon