首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据用户输入创建对象

如何根据用户输入创建对象
EN

Stack Overflow用户
提问于 2017-04-15 12:30:44
回答 1查看 645关注 0票数 0

假设我有一个类Box

代码语言:javascript
复制
class Box{
    ...
};

我需要创建基于用户输入的框。我试着做一个蓝图对象

方法1:

代码语言:javascript
复制
int main(){
    Box box; //Blueprint
    vector<Box> boxes;
    for(int i = 0; i < 5; i++) //Creates 5 boxes
        boxes.push_back(box);

    return 0;
}

这个很管用。它创建一个包含5个Box对象的向量。但随后我尝试执行以下操作,以便每次使用构造函数创建一个对象时都可以设置值。

方法2:

代码语言:javascript
复制
int main(){
    vector<Box> boxes;

    for(int i = 0; i < 5; i++){ //Creates 5 boxes
        //Lets assume we input x and y every time
        Box box(x, y);
        boxes.push_back(box);
    }

    return 0;
}

这似乎工作得很好,当使用boxes[i].x时,它给出了它应该的x值。请注意,为示例的简单起见,x和y是Public,而不是Private

我看到了this帖子,用户patrick解释了如何使用很多名为盒子工厂的类来动态创建对象,我不明白你必须让它变得如此复杂,而不是使用我在这篇文章中尝试并为我工作的两种方法之一。

我的问题是:

  1. 我的方法是根据用户输入创建对象的正确方法吗?
  2. 如果是的话,我的哪一种方法是这两种方法中最好的
  3. 我的方式和帕特里克的方式有什么区别?

我正在制作的最初的程序有一个名为 AI 的类,我希望根据用户想要使用的AI数量来创建这个类的更多对象。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-15 12:46:51

对象工厂是时间的主要部分,用来制作与用户输入不同的对象。

想象一下你有一个名叫动物的班级。你有三个孩子班:猫,狗和鱼。正如我所说的,这些类都是从动物那里继承的。您希望创建一个猫、狗或鱼,以依赖用户输入。在本例中,对象工厂非常有用;在您的示例中,这并不是因为您总是实例化Box对象

你这样做是很好的。在那个时候,你不需要更复杂的东西,比如对象工厂。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43426082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档