首页 > 解决方案 > 如何在运行时创建和命名对象?

问题描述

我有一个名为 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()

标签: c++classconstructorinstance

解决方案


这不可能。标识符无法在运行时确定。

可能接近您尝试的方法是使用从字符串名称到学生对象的关联映射。


推荐阅读