[英]Dynamically create objects in c++?
看一下這段代碼,它具有一個類,當創建一個新對象時,該類將為它提供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。
我該怎么做? 我當然知道我不能像硬編碼的那樣做,因為我不能將用戶輸入引用為變量名,但是有什么方法可以通過操縱指針或其他方式來完成我所要求的?
使用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';
您可能只希望每個Pokemon都有一個name
屬性(成員變量/字段)。 只需制造一堆名稱已填滿的神奇寶貝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.