c++ - 如何在 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;
}
解决方案
您应该在循环之前分配数组。
此外,该名称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
。
推荐阅读
- mysql - 如果没有其他行匹配,则返回默认行的 MYSQL 查询
- mongodb - Mongodb聚合:测试字段是数字还是字母数字,如果是字母数字则将其拆分
- typescript - 扩展一组函数以接受 Typescript 中的额外参数
- python - 如何在python中修复列表索引超出范围
- java - 为什么我可以更改类中的私有属性?
- go - 使用 nacl.Sign 并理解其 I/O 参数
- java - 如何将文件分隔符添加到 javax.servlet.http.Part.getSubmittedFileName
- c# - 使用 Microsoft.Azure.Cosmos 时如何获取已编译的查询
- django - Django导入基于值非模型字段添加多对多关系
- java - 找出输入中有多少相等对