2015-03-02 159 views
0

我正在创建一个程序,每次按某个按钮时都会生成一个新对象。我想顺序命名这些对象,而不必在一定数量的对象中进行硬编码。 C++中有没有办法可以做到这一点?创建顺序类对象

我想要的代码是这样的

if (key == 'n') 
{ 
    new Object *shape1*; 
} 
然后在下一次

它贯穿,这是

if (key == 'n') 
{ 
    new Object *shape2*; 
} 

则已经作出的所有对象后,我希望有一个纪录创建的数字(全局变量保持跟踪计数)能够打印所有这些。 我在一两年内没有使用过C++,所以我不确定是否有更好的方法来做到这一点,我只是忘记了什么。如果你有更好的方式来做到这一点,我愿意接受任何想法。

谢谢!

+0

您可以使用对象数组并将新对象放置到新位置。但是你会浪费内存。 – ForceBru 2015-03-02 18:53:01

+0

为什么你给变量赋予什么名字?无论如何,你的编译器asfaik允许给它们任意名称,因为它们对编译后的程序没有任何影响 – user463035818 2015-03-02 18:55:51

回答

1

我会阻止你试图动态命名变量。相反,您可以将动态对象添加到容器。

std::vector<Object*> objects; 

if (key == 'n') 
{ 
    Object* newObject = new Object; 
    objects.push_back(newObject); 
} 

然后,可以基本上使用索引作为增加的变量名,例如

objects[3] 

这也将使得清理你分配的内存不是试图与未知名不明数量的变量追捕到delete他们容易得多。

+0

我相信这对我很有用。让我试试看,看看会发生什么,我会回来检查它 – cwendel 2015-03-02 19:04:28

+0

由于某种原因.append不会工作 – cwendel 2015-03-02 19:49:35

+0

我想通了。它想要push_back而不是追加。感谢帮助! – cwendel 2015-03-02 21:37:41