用c ++动态创建对象?

时间:2016-01-21 00:09:45

标签: c++ class object

看看这段代码,它有一个类,当创建一个新对象时,它会给它一个1到100之间的'lvl'的随机数。在类之后,我使用类实例定义一些对象。

#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
    class newPokemon {
        public:
            int lvl;
            newPokemon() {
                lvl = (rand() % 100 + 1);
            };
            void getLevel() {
                cout << lvl << endl;
            };
    };

    newPokemon Gengar;
    newPokemon Ghastly;
    newPokemon ayylmao;
};

我接下来要做的是允许用户通过询问他们的名字来定义新的口袋妖怪(对象)。但是,这意味着我需要动态创建对象。例如,

程序要求用户输入名称
然后将名称保存为类newPokemon中的对象 程序可以使用该名称来运行类中的其他函数,例如getLevel。

我怎么能这样做?当然,我得到的是我不能像硬编码那样做,因为我不能将用户输入作为变量名称引用,但是有什么方法可以通过操作指针或其他东西来做我想要的事情吗?

2 个答案:

答案 0 :(得分:3)

使用std::map根据名称保存对象:

std::map<std::string, newPokemon> world;

您必须确保在创建对象后立即将对象添加到map

std::string name;
... // ask the user for a name
world[name] = newPokemon();
std::cout << "Your level is " << world[name].getLevel() << '\n';

答案 1 :(得分:1)

您可能只希望每个宠物小精灵都拥有lmer()属性(成员变量/字段)。只需填写一堆口袋妖怪,并填写名称。