在循环中创建具有不同名称的100个对象

时间:2013-03-06 12:01:22

标签: c++ object for-loop

如何创建一个可以创建100个不同对象的循环。假设我有课myPage Page1。 我想从myPage创建100个这样的对象,让我们说Page1 .... Page100 我还需要在变量中保存对象名称,例如char name[10]

for(int i = 0; i<100; i++)
{
    // create object with different name of my class
    // char name = name of object//something like that
}

有可能吗?怎么样?

3 个答案:

答案 0 :(得分:6)

  

有可能吗?

否。 C ++中的变量名称是在编译时分配的。

只需使用std::vector<myPage>(或std::array<myPage, N>,如果在编译时确定大小并且不得更改)并通过索引按位置访问对象。

答案 1 :(得分:2)

说“C ++中的变量名称是在编译时分配的。”,Andy Prowl是对的, 所以你不能在执行期间改变变量的名称。

但是,如果你想做一些不可能的事情,还有其他方法来解决你的问题, 而不是获得相同类型的100 var,您可以实例化一个充满所有myPage实例的容器,这是一个丑陋的例子:

std::map<std::string, myPage*> pages;
for (int i = 0; i < 100; ++i)
{
   std::string name = "page";
   page += i;
   pages.insert (std::make_pair (name, new myPage ()));
}

和访问:

myPage* page = pages["page18"];

答案 2 :(得分:0)

不,这样就不可能了。 创建对象时,您将创建一个标识符(源代码中对象的名称),并且在运行时无法更改此标识符。您可以创建一个具有name成员的类,并在构造时分配它。