如何从变量值初始化对象
How can you initialize an object from a variables value?
我想通过获取用户输入来生成一个即将初始化的对象的名称。这可能吗?是否有一种方法来命名一个基于变量值的对象?
我知道下面的代码"测试x"不起作用,我知道为什么…但是有办法让它起作用吗?我已经想了两天了。我最接近的东西可能是stringstreams…或者更糟的是……不可能吗?任何帮助吗?
#include <iostream>
using namespace std;
#include <string>
class test
{
public:
string wtf;
};
int main()
{
test y; // showing normal initialize
y.wtf = "a"; // assign value
string x;
cin >> x; // initialize string and get input
test x // trying to initialize object based on input
x.wtf = "a"; // then assign a value
cout << y.wtf; // printing both to test
cout << x.wtf;
return 0;
}
我的意图是有一个单一的数组,保存员工编号(与一个"emp"或开头的东西连接),为每个员工初始化对象。因此,用户将输入一个员工编号,比如1234,我将创建一个字符串,添加emp + 1234,结果是"emp1234"……然后我将启动一个像"test emp1234"这样的对象,它将在类内部与一堆不同的变量相关联。
我可能看错了…而且可能解释得很蹩脚。我显然是新手,但我需要任何可能的帮助。
我会这样做:
#include <vector>
#include <string>
#include <iostream>
#include <stdexcept>
test make_test()
{
std::string s;
if (!(std::cin >> s))
{
throw std::runtime_error("Premature end of input");
}
return { "emp" + s };
}
int main()
{
std::vector<test> v;
for (int i = 0; i != 10; ++i)
{
v.push_back(make_test());
std::cout << "Added employee '" << v.back().wtf << "'n";
}
}
这将用10条员工记录填充一个向量。
不,不能在运行时创建变量名,因为运行时不存在名称。它们是静态结构,只在编译过程中有用。
然而,听起来你真的只想要一个std::map
。您可以使用它从整数(员工编号)映射到test
对象:
std::map<int, test> employees;
int employeeNumber;
std::cin >> employeeNumber;
employees[employeeNumber]; // Will default construct a test object mapped to employeeNumber
// Alternatively:
test t( /* some constructor args */ );
employees[employeeNumber] = t;
然后,如果您想访问雇员编号为1234
的test
对象,例如,您可以简单地执行:
employees[1234]
相关文章:
- C++使用整数的压缩数组初始化对象
- 如何使用cudaMallocManaged在指针位置初始化对象?(C++)
- 在 c++ 中初始化对象
- C++ 手动分配和初始化对象
- 使用运算符"="在C++中用值初始化对象
- 当我不需要数据库中的所有值时,如何部分初始化 c++ 对象?
- 如何初始化对象数组?
- 在C++中使用默认构造函数初始化对象的不同方法
- 使用默认构造函数初始化对象的不同方法
- 是否可以在编译时初始化对象的 C 样式函数指针,以便它调用对象的成员函数?
- 如何在线程中初始化对象,然后在其他地方使用它?
- 在没有默认构造函数时使用垃圾数据初始化对象
- 如果在 C++ 构造函数中以错误的顺序初始化对象数据,会发生什么类型的错误
- 初始化对象以在 C++08 中作为参数传递的首选语法是什么?
- 在 c++ 中复制对未初始化对象的引用
- 在成员变量在另一个文件中发生更改后,调用与初始化对象分开的函数
- 在不放置新运算符的情况下,在预分配的内存上使用虚函数初始化对象 - 这可能吗?如果没有,为什么
- 复制 CTOR 与赋值运算符以初始化对象(性能)
- 当您通过分配初始化C 对象时会发生什么
- 获取未初始化对象成员的地址是否定义良好?