Hullo,第一次问一个问题!我有3个类,CharacterBuilder,它是一个抽象类,BullyCharacterBuilder,它继承自CharacterBuilder并重新定义它的一个函数,而Character,这是一个泛型类,包含我需要使用的访问器/ mutator的整数。
我在CharacterBuilder.h中定义了一个指向Character的指针,如下所示:
#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文件中,我尝试从Character指针调用accessor / mutators(我假设我继承自CharacterBuilder),如下所示:
#include "Character.h"
#include "BullyCharacterBuilder.h"
#include "CharacterBuilder.h"
void buildCharacter(int level){
leeroy->setAbilityScores();
}
当我尝试这样做时,我得到错误:标识符“leeroy”未定义 这可能是一个愚蠢的问题,但我尝试在stackoverflow和谷歌上使用我能想到的每个关键字组合搜索这个特殊问题。将不得不提供任何帮助!
答案 0 :(得分:0)
您需要将buildCharacter实现为CharacterBuilder类
上的方法void BullyCharacterBuilder::buildCharacter(int level)
{
leeroy->setAbilityScores();
}
答案 1 :(得分:0)
您忘记使用您的班级名称buildCharacter
限定函数BullyCharacterBuilder
:
void BullyCharacterBuilder::buildCharacter(int level){
leeroy->setAbilityScores();
}
答案 2 :(得分:0)
如果您输入void buildCharacter(int level)
这意味着该功能是独立的,并且不属于任何类,
所以你必须这样打字
void BullyCharacterBuilder::buildCharacter(int level)
告诉编译器该函数属于BullyCharacterBuilder