我目前正在我的类中处理类继承/多态性,但我无法解决这个问题。好的,这里是:假设我有 2 个模拟类,我让用户选择一个对应于构造函数中最后一个参数的值:
class Planets {
private:
int x,y,z;
string a;
public:
Planets(string name, int diameter, int mass, int planet_kind) : a(name), x(diameter), y(mass), z(planet_kind) { }
Planets() { a="", x=0, y=0, z=0; }
//get and set functions to manipulate data
virtual void planet_creation(Planets& p1);
//function I want to modify depending on the planet
}
需要注意的是planet_kind 变量。我希望父类成为其他类的基线,例如,气态巨行星为 2,有生命的行星为 1,等等……它们都有自己的类和构造函数。例如在另一个类中:
class Gas_giant : public Planets {
private:
int x,y,z;
string a;
public:
Gas_giant(string name, int diameter, int mass, int planet_kind) : a(name), x(diameter), y(mass), z(planet_kind) { }
Gas_giant() { a="Gas", x=0, y=0, z=2; }
//get and set functions to manipulate data
void planet_creation(Gas_giant& g);
//function I want to modify depending on the planet
//example: gas giants would be larger when created,have no solid mass,high gravity
}
基本上我希望用户能够输入行星的种类和名称,然后根据他们选择的种类,调用某些类型的行星以不同的方式随机生成。函数不是问题,我遇到的问题是让我的程序根据基本构造函数中的参数选择不同的构造函数。
我不希望我的程序创建任何“0 型”行星,它只是一个我试图从中派生所有其余部分的类。
在此先感谢,如果这是一个愚蠢的问题,我很抱歉。