2013-11-22 6 views
1

Hullo, 처음 질문하기! CharacterBuilder는 CharacterBuilder에서 상속 받고 그 함수 중 하나를 재정의하는 BullyCharacterBuilder 클래스와 Character 클래스를 제공합니다.이 클래스는 필요한 접근 자/변경자가 포함 된 일반 클래스입니다.추상 클래스 c의 하위 클래스에서 추상 클래스의 참조 사용

나는과 같이 CharacterBuilder.h에 문자에 대한 포인터를 정의 :

#ifndef CHARACTERBUILDER_H 
    #define CHARACTERBUILDER_H 
    #include "Character.h" 

    class CharacterBuilder { 
    public: 
     Character* getCharacter(); 
     void createNewCharacter(); 
     virtual void buildCharacter(int level) = 0; 

    protected: 
     Character* leeroy; 

    }; 
    #endif 

CharacterBuilder.cpp에게

#include "CharacterBuilder.h" 
    #include "Character.h" 

    Character* leeroy; 

    Character* CharacterBuilder::getCharacter() { 
     return leeroy; 
    } 
    void CharacterBuilder::createNewCharacter(){ 
     leeroy = new Character; 
    } 

그럼 내가 지금처럼 내 BullyCharacterBuilder 클래스에 CharacterBuilder에서 공개적으로 상속 :

#ifndef BULLYCHARACTERBUILDER_H 
#define BULLYCHARACTERBUILDER_H 

#include "Character.h" 
#include "CharacterBuilder.h" 

class CharacterBuilder; 

class BullyCharacterBuilder : public CharacterBuilder{ 

    CharacterBuilder* myParent; 

void buildCharacter(int level); 
}; 
#endif 

마지막으로, 내 BullyCharacterBuilder의 cpp 파일에서 나는이 작업을 수행 할 때

#include "Character.h" 
#include "BullyCharacterBuilder.h" 
#include "CharacterBuilder.h" 

void buildCharacter(int level){ 
leeroy->setAbilityScores(); 
} 

, 나는 오류 얻을 : ttempt (나는 내가 CharacterBuilder로부터 상속 한 가정) 문자 포인터에서/뮤 테이터과 같이 접근 호출 정의되지 않은 식별자 "leeroy을" 어리석은 질문 일지 모르지만 stackoverflow 및 Google에서 생각할 수있는 모든 키워드 조합을 사용하여이 특정 문제를 검색해 보았습니다. 도움을 많이 줘야 할 것입니다!

+0

Leeroy에 액세스하려면 CharacterBuilder 또는 그 자녀 중 한 사람의 방법이 필요합니다. BullyCharacterBuilder의 메소드가되도록하려면 buildCharacter를 정의 할 수 없습니다. – Nil

답변

0

CharacterBuilder 클래스의 방법으로 buildCharacter를 구현해야합니다

void BullyCharacterBuilder::buildCharacter(int level){ 
leeroy->setAbilityScores(); 
} 
+0

아하 이것이 정확히 문제를 해결합니다. 고마워, 그리고 다른 두 사람에게도! – user3020163

0

당신은 당신은 당신의 클래스 이름 BullyCharacterBuilder과 기능 buildCharacter 자격을 잊었

void BullyCharacterBuilder::buildCharacter(int level) 
{ 
    leeroy->setAbilityScores(); 
} 
0

void buildCharacter(int level) 의미처럼 입력하면 함수가 독립적이며 어떤 클래스에도 속하지 않으므로 void BullyCharacterBuilder::buildCharacter(int level)과 같이 입력해야 함수가 속해 있음을 컴파일러에 알릴 수 있습니다. BullyCharacterBuilder에

관련 문제