【发布时间】:2019-11-22 13:49:13
【问题描述】:
我有一个名为 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()
【问题讨论】:
-
这是不可能的。看看
std::map。 -
不完全是,但如果您不使用继承,您可以将它们放在带有字符串键的映射中。继承会使事情复杂化,但基本思想是一样的。
-
您不能在运行时“命名”变量,这根本不可能。你为什么要这样做?也许您正在寻找的是某种字典或容器来存储对象?
-
您的程序必须生成 C++ 代码,编译新代码,然后执行新的可执行文件。不是典型的 C++ 做事方式,尽管有一些专门的用例做类似的事情。
标签: c++ class constructor instance