在抽象类c的子类中使用来自抽象类的引用
using reference from abstract class in a child class of abstract class c
Hullo,第一次提问!我有三个类,CharacterBuilder,它是一个抽象类,BullyCharacterBuilder,它继承了CharacterBuilder并重新定义了它的一个函数,Character,它是充满int的泛型类,我需要使用访问器/赋值器。
我在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指针(我认为我从CharacterBuilder继承了它)调用访问器/赋值器,如下所示:
#include "Character.h"
#include "BullyCharacterBuilder.h"
#include "CharacterBuilder.h"
void buildCharacter(int level){
leeroy->setAbilityScores();
}
当我尝试这样做时,我会得到错误:标识符"leeroy"未定义这可能是一个愚蠢的问题,但我试着用我能想到的每一个关键词组合在stackoverflow和谷歌上搜索这个特定的问题。非常感谢您的帮助!
您忘记用类名BullyCharacterBuilder
:限定函数buildCharacter
void BullyCharacterBuilder::buildCharacter(int level){
leeroy->setAbilityScores();
}
您需要在CharacterBuilder类上实现buildCharacter作为方法
void BullyCharacterBuilder::buildCharacter(int level)
{
leeroy->setAbilityScores();
}
如果像这样键入void buildCharacter(int level)
,意味着函数是独立的,不属于任何类,所以你必须这样打字void BullyCharacterBuilder::buildCharacter(int level)
告诉编译器该函数属于BullyCharacterBuilder
相关文章:
- 无法创建抽象类的实例
- 用pybind11包装C++抽象类时出错
- 对纯抽象类中方法的未定义引用
- C++ 为什么要返回对基抽象类的引用
- 为什么我可以取消引用指向抽象类的指针?
- 通过初始化列表设置抽象类的引用
- C++ 接受对抽象类的常量引用的构造函数无法初始化 std::map
- 对抽象类的引用不能传递给线程函数?
- 重写指向抽象类的指针的引用值无效
- 使用智能指针将右值引用绑定到抽象类的替代方法
- 引用,而不是指向抽象类的指针
- 在抽象类c的子类中使用来自抽象类的引用
- 返回对抽象类的引用的模板运算符
- 将习语复制并交换为引用抽象类的类
- 结构,并引用抽象类类型
- 在QML插件中注册一个C++抽象类,并从QML中引用它
- 增强引用成员抽象类的序列化
- 如何对引用传递的抽象类使用绑定
- 如何初始化对抽象类的"bad"空引用
- 无法实例化抽象类:为什么模板参数(引用)导致这种情况