我有一个名为studentInfo的类:

#pragma once
#include<string>
using namespace std;

class studentInfo
{
public:
    //constructors
    studentInfo() {}
    studentInfo(string n, int a, string g);

    void printDetails();

private:
    string name;
    string gender;
    int age;
};


.cpp文件:

#include "studentInfo.h"
#include<string>
#include<iostream>

studentInfo::studentInfo(string n, int a, string g)
{
    name = n;
    age = a;
    gender = g;
}

void studentInfo::printDetails()
{
    std::cout << "Name: " << name << "\nAge: " << age << "\nGender: " << gender << endl;
}


因此,我知道如何使用构造函数创建实例,例如:studentInfo s1182("Ollie", 19, "Male");,但是有没有一种方法可以在运行时执行该实例并使实例由用户输入命名?
类似于以下内容:

string ID;
cin >> ID;

studentInfo *what ID is*("Bob", 18, "Male");


这样,如果输入的ID是s2212,则该实例将命名为s2212,这意味着我可以执行s2212.printDetails()

最佳答案

最好的选择是使用这样的地图

string ID;
cin >> ID;

map<string, studentInfo> students;

if(students.find(ID) == students.end())
   students[ID] = studentInfo("Bob", 18, "Male");


附注:有各种各样的方法可将条目插入地图。阅读reference manual

09-08 09:06