【发布时间】:2020-05-12 16:29:06
【问题描述】:
我有一个学校项目,其中有一个世界模拟。老师要我做保存/加载系统,我遇到了问题。我的数据以name x y 格式保存,所以保存效果很好。
当我想加载数据时,问题就开始了。这是我的解决方案:
switch(name) {
case "Human":
new Human(x,y);
break;
case "Dog":
new Dog(x,y);
break;
}
有没有办法概括这一点?保存的name 总是与constructor name 完全相同,所以我只想做这样的事情:
string name = "Human"
new <name>(x,y) <-> new Human(x,y);
我的解决方案工作得很好,但是按照 OOP 的规则,世界不应该知道什么样的有机体生活在上面。
【问题讨论】:
-
您提供的代码可能没有按照您的意愿执行。您正在分配和构造一个对象,但必须引用/指向该内存(泄漏内存)。
-
伙计们 - 我知道我的示例代码在那里没有做任何事情。这只是我想要实现的一个例子
-
我有一个 Organizm 类,然后是从 Organism 派生的 Plants and Animals,然后是 Dog、Human、Flower 等类
-
我只是想知道是否可以从变量构造一个对象,因此对于给定变量
string name = "Human",代码将在不使用 switch 或 if 条件的情况下执行new Human
标签: c++ class constructor