你好,第一次问一个问题!我有3个类,CharacterBuilder,它是一个抽象类,BullyCharacterBuilder,它继承自CharacterBuilder并重新定义它的一个函数; 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;
}
然后我从CharacterBuilder公开继承我BullyCharacterBuilder类,像这样:
#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文件中,我a ttempt调用访问,像这样从字符指针/存取器(我假设我从CharacterBuilder继承):
#include "Character.h"
#include "BullyCharacterBuilder.h"
#include "CharacterBuilder.h"
void buildCharacter(int level){
leeroy->setAbilityScores();
}
当我试图做到这一点,我得到错误:标识符“leeroy”未定义 这可能是一个愚蠢的问题,但我试图在stackoverflow上搜索这个特定的问题,并使用每个关键字组合我可以想到的谷歌。将非常有义务任何帮助!
您需要使用CharacterBuilder或其子项之一的方法来访问leeroy。如果你想让它成为BullyCharacterBuilder的一个方法,你不能像这样定义buildCharacter。 – Nil