你好,第一次問一個問題!我有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