如何创建一个可以创建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
}
有可能吗?怎么样?
答案 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
成员的类,并在构造时分配它。