是否有一种简单的方法可以在运行时在C 中创建/名称对象
Is there a simple way to create/name objects in c++ during runtime?
我一般对编程的新手!
因此,我正在构建一个程序,该程序只需获取有关用户的信息并将其存储在对象中。因此,每次新用户出现时,我都需要一个带有新名称的新对象(这只是我要练习的程序)。我知道我在堆上分配了空间,但是如果我不知道要净到多少个对象,我怎么知道我需要多少空间?我认为我需要做的是在创建OBJ的函数中分配内存,因此每次称为函数时,我都会获得所需的内存?我读了一些人建议使用向量的东西,所以我简要介绍了一个关于这些的简介,但是当我尝试此
时string objname;
cin >> objname;
vector<string> v;
v.push_back(objname);
usersclass v.back();
v.back().somefunc();
出现错误,我说这与以下错误没有什么不同:
string objname;
cin >> objname;
usersclass objname;
objname.somefunc();
请给我一个例子,这不是给学校或我在自学的任何东西。
您在运行时不能命名对象。实际上,在运行时,所有这些不错的变量名称都消失了,构建程序时由编译器和链接器取代。
您可以做的是std::map<std::string, usersclass> names;
,并将其与names[objname].somefunc()
std::map
为您管理所有存储空间,因此您不必分配或处理任何内容。
std::map
您正在尝试做奇怪的事情,因为vector v
仅包含字符串,而您只是编写不正确的代码。
我假设您要创建usersclass
对象,因此您需要一个以std::string
为参数的构造函数,并且您的代码应该是这样的。
class usersclass {
public:
usersclass(const std::string& arg) : m_string(arg) {};
void somefunc() { /* 'dunno, maybe std::cout << m_string' ? */ }
private:
std::string m_string;
}
// somewhere in main()
string objname;
cin >> objname;
usersclass userobject{ objname };
userobject.somefunc();
但总的来说,我建议从这里阅读任何初学者书。这对您非常有帮助。
我尚未查看std ::映射,所以我可以对此进行评论,但是,是的,starl1ght是正确的,我真的不理解obj/class的代码,以防万一初学者需要一个超简单的示例程序:
int main()
{
std::vector<newclass> vnewclass;
int x(1);
int z(0);
int c;
while(x == 1)
{
std::cout << z << std::endl;
newclass objs;
objs.printhi();
objs.enterdata();
objs.printdata();
vnewclass.push_back(objs);
std::cout << "add obj ?" << std::endl;
std::cin >> x;
z++;
}
std::cout << "what obj would you like to view ?" << std::endl;
std::cin >> c;
vnewclass[c].printdata();
return 0;
}
相关文章:
- 创建 QtChart 对象会在运行时创建EXC_BAD_ACCESS错误
- 在编译时而不是运行时创建一个由两个字节组成的值
- 如何在运行时创建和命名对象?
- 在运行时创建和更改游戏状态
- 在运行时创建 DFA.多少个州
- 是否有任何可能的方法将事件(自定义)附加到在运行时创建的对象?[C 构建器]
- 在 OpenGL ES for Android 中运行时创建大型纹理的最有效方法
- 根据用户的输入在运行时创建对象
- 如何在游戏运行时创建新函数并执行它
- 在运行时创建TCOMBOBOX的更快方法
- 如何在运行时创建一个由N个整数组成的元组
- 如何在运行时创建和增加数组的大小 C++.
- C++我在运行时创建一个输出文件,如何再次读取此输出文件作为输入
- 在运行时创建一个具有唯一函数指针的函数
- 在运行时创建Python3模块,同时初始化嵌入式Python
- C++-在运行时创建函数
- Box2D-在运行时创建实体时,实体不会发生碰撞
- 使用运行时创建的模板的对话框在 XP 32 位上不起作用
- 在运行时创建具有不同名称的对象
- C++,在运行时创建类