1

如何创建一个将创建 100 个不同对象的循环。假设我有课myPage Page1。我想创建 100 个这样的对象,myPage比如说 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
}

可能吗?如何?

4

3 回答 3

6

可能吗?

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

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

于 2013-03-06T12:03:15.700 回答
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"];
于 2013-03-06T12:19:01.733 回答
0

不,那是不可能的。当您创建对象时,您会创建一个标识符(源代码中的对象名称),并且在运行时无法更改此标识符。您可以创建一个具有name-member 的类并在构造时分配它。

于 2013-03-06T12:04:50.163 回答