C++ 中的变量对象名称

Posted

技术标签:

【中文标题】C++ 中的变量对象名称【英文标题】:Variable Object Names in C++ 【发布时间】:2020-04-02 21:24:03 【问题描述】:

我正在寻找一种通过 for 循环创建类对象的方法。作为参考,我正在尝试创建一类对象,用户输入将确定需要多少个对象。我在 for 循环中使用构造函数来执行此操作,但它要求对象名称是可变的。我尝试了很多方法,没有任何效果,包括向量。我实际上是在一天前开始使用 C++ 的,所以请忽略那些乱七八糟的代码或愚蠢的错误,除非它们与问题相关,这是一个宠物项目。

// Enemy Names
    string eNames[ENum];

    // Enemy Initiatives
    double eInits[ENum];

    //Enemy Temp ID's
    int eTempids[ENum];

    // Enemy Names Vector
    std::vector<EnemyClass> en(ENum);

    if (ENum > 0) 
        for(int i = 0; i < ENum; i++)
            string name;
            double init;
            int tempid = i + PLAYER;
            cout << "Enter Enemy " << i + 1 << "'s Name" << endl;
            cin >> name;
            cout <<  "Enter " << name << "'s Initiative" << endl;
            cin >> init;
            eNames[i] = name;
            eInits[i] = init;
            eTempids[i] = tempid;
            EnemyClass en[i](string name, double init, int tempid);
        ;
    ; // END of IF Statement

en[i] 是变量名。我要么收到一条错误消息,指出“'en' 作为函数数组的减速”或 'EnemyClass' 不是声明的函数,不知道如何使用它是我发现的另一个论坛帖子的尝试:

问题和我的一样,代码如下:

for (int count = 0;  count < no_of_objects; count ++)

    ClassName object_name[count]

答案代码:

std::vector<ClassName> objects (no_of_objects);

但这会在 stl_construct.h 文件中产生“未声明的函数”错误

【问题讨论】:

您的源代码中存在变量名称,如name。像任何输入到name 中的字符串都存在于您的程序中。它们是完全独立的东西,你的程序永远不能创建更多的变量名。但是您可以分配给vector 中的未命名对象:请参阅@SM 的答案中的en[i] = ...。 经验法则:如果您使用并行数组,请使用字段创建一个结构,并使用该结构的一个数组 (std::vector)。 【参考方案1】:

查看Why aren't variable-length arrays part of the C++ standard? 以了解为什么声明string eNames[ENum]double eInits[ENum]int eTempids[ENum] 是错误的。使用向量,就像您对 en 所做的那样:std::vector&lt;string&gt; eNames(ENum)std::vector&lt;double&gt; eInits(ENum)std::vector&lt;int&gt; eTempids(ENum)

关于你的问题。分配是这样使用的:

en[i] = EnemyClass(name, init, tempid);

如果您声明空的敌人名称向量并就地填充它会更好:

std::vector<EnemyClass> en;
// ...
  en.emplace_back(name, init, tempid);

附:不要在 *** 上学习 C++。从The Definitive C++ Book Guide and List开始看书

【讨论】:

以上是关于C++ 中的变量对象名称的主要内容,如果未能解决你的问题,请参考以下文章

C++引用

C++程序文件链接

开心档之C++ 引用

如何通过JNI将java中的对象的地址赋值给c++指针变量

软件开发入门教程网之C++ 引用

更改 randomForest 对象中的变量名称