首页 > 解决方案 > 如何在 C++ 中使用数组值作为类对象名?

问题描述

我正在尝试使用数组中的对象名称。我知道我在循环下面写了错误的代码。我应该如何在下面的指针行上编写代码以使用数组中的对象名称?

在此处输入图像描述

这是完整的代码:

#include <iostream>
using namespace std;

class Students{
    public:
        int index;
        string name;
        string father;
};
int main() {
    string nname[] = {"John", "Doe"};
    string fname[] = {"Ex John Father", "Ex Doe Father"};

    int NarrSize = sizeof(nname)/sizeof(nname[0]); // Size of nname array
    int FarrSize = sizeof(fname)/sizeof(fname[0]); // Size of fname array

    if( NarrSize == FarrSize ){ // Check if both array size is same
       for(int i=0; i<NarrSize; i++){
            Students nname[i];

            nname[i].index  = i+1;
            nname[i].name   = nname[i];
            nname[i].father = fname[i];
        }
    }

  return 0;
}

标签: c++

解决方案


您应该在循环之前分配数组。

此外,该名称nname已用作 的数组string,因此您应该为 的数组指定另一个名称Students

使用非标准 VLA(可变长度数组):

    if( NarrSize == FarrSize ){ // Check if both array size is same
       Students student_array[NarrSize]; // allocate array
       for(int i=0; i<NarrSize; i++){

            student_array[i].index  = i+1;
            student_array[i].name   = nname[i];
            student_array[i].father = fname[i];
        }
    }

改为使用std::vector

    if( NarrSize == FarrSize ){ // Check if both array size is same
       std::vector<Students> student_array(NarrSize); // allocate vector
       for(int i=0; i<NarrSize; i++){

            student_array[i].index  = i+1;
            student_array[i].name   = nname[i];
            student_array[i].father = fname[i];
        }
    }

添加#include <vector>使用std::vector


推荐阅读