我是 C++ 的新手,我在这方面遇到了麻烦。所以我正在尝试创建可以使用通用子类调用彼此字段的类。
基本上,我正在尝试制作一款游戏,其中包含一种通用类型和三种类型,它们之间存在优势/劣势。我真的只有 Java 方面的经验,将这种东西翻译成 C++ 对我来说并不合适
泛型分为三种类型:类型 1、类型 2、类型 3。
泛型需要具体
在泛型中有字段attack, defense, hitpoints
类型 1、2 和 3 都继承了这些字段。
我正在尝试在泛型类中创建一个虚函数:
virtual void attack(Generic* g);
问题是,当我尝试制作 type_1.attack(generic)
时,我想执行 g->hitpoints 以获得通用的生命值,但它似乎无法正常工作在 C++ 中。
此外,我知道我一定做错了什么,因为类型 1、2 和 3 都包含通用类型的 header ,但是如果我想在 main.cpp 中包含这 3 个 header ,它会给我一个错误分别声明通用 3 次。
我该怎么做?
抱歉,这是一个非常具体的问题,有点含糊。如果我需要澄清任何事情,请告诉我
编辑:这是我所说的基本设置
//在generic.h中
类通用{
protected :
整数生命值;
强度;
内部防御;
民众:
虚拟虚空攻击(通用* g);
};
//type1.h
#include 'generic.h'
类 Type1:公共(public)通用{
无效攻击(通用* g);
};
//在type1.cpp中
void Type1::attack(Generic*g) {
g->hitpoints = strength - g->defense;
}
最佳答案
对象可以访问它自己的 protected
从基类继承的成员。但是一个对象不能访问另一个对象的 protected
成员。这就是 private
与 protected
之间的区别 - private
成员只能由声明它们的类访问,但 protected
成员可以被声明类及其后代访问。不过,两者对于外部代码仍然是私有(private)的。
要执行您正在尝试的操作,hitpoints
需要public
。
关于c++ - 使子类可以调用彼此的共享成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19337264/