1

100個の異なるオブジェクトを作成するループを作成するにはどうすればよいですか。クラスがあるとしましょうmyPage Page1myPageたとえば、Page1 .... Page100からこれらのオブジェクトを100個作成したいのですが、たとえば、オブジェクト名を変数に保存する必要があります。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 に答える