Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 初学者C++;:在不知道要创建多少对象的情况下在运行时创建对象_C++_Class_Object_Runtime - Fatal编程技术网

C++ 初学者C++;:在不知道要创建多少对象的情况下在运行时创建对象

C++ 初学者C++;:在不知道要创建多少对象的情况下在运行时创建对象,c++,class,object,runtime,C++,Class,Object,Runtime,假设我有一个我定义的类叫做“MyClass”。我的“main”方法将文件名列表作为参数。每个文件名都是MyClass的配置文件,但是程序用户可以拥有任意多的MyClass对象。如果他们输入2个文件名作为main方法的参数,我希望有2个对象 如果我知道用户仅限于2个对象,我可以使用: MyClass myclass1; MyClass myclass2; 然而,如果用户说输入了3或4个文件名,这将不起作用。有谁能帮我推荐一种方法,我可以使用它根据我的程序给出的参数的数量来创建一个类的多个参数 谢

假设我有一个我定义的类叫做“MyClass”。我的“main”方法将文件名列表作为参数。每个文件名都是MyClass的配置文件,但是程序用户可以拥有任意多的MyClass对象。如果他们输入2个文件名作为main方法的参数,我希望有2个对象

如果我知道用户仅限于2个对象,我可以使用:

MyClass myclass1;
MyClass myclass2;
然而,如果用户说输入了3或4个文件名,这将不起作用。有谁能帮我推荐一种方法,我可以使用它根据我的程序给出的参数的数量来创建一个类的多个参数


谢谢

您可以使用
std::vector
MyClass
实例,然后您可以制作任意数量的实例


例如,请看一看(网络上的许多例子中的一个),开始学习。

为此,您应该使用数组或向量:

vector<MyClass> myclass;

myclass.push_back( ... );  // Make your objects, push them into the vector.
myclass.push_back( ... );
myclass.push_back( ... );
有关更多信息和示例,请参见维基百科:


使用
std::vector
。范例

#include <vector>

std::vector<MyClass> vec;
vec.push_back(MyClass());
vec.push_back(MyClass());
vec.push_back(MyClass());
#包括
std::vec;
向量推回(MyClass());
向量推回(MyClass());
向量推回(MyClass());

之后,您可以通过
[]
和迭代器等访问元素。web上有很多很好的引用。

向量可以工作,数组不能工作,除非你知道对象的最大数量,即使这样也会很浪费,因为如果你可以有100个,但只使用1个,你就浪费了99个对象大小的内存。@Joel:我指的是通过
新建
动态分配的数组。但是,是的,您的观点适用于固定大小的阵列。
#include <vector>

std::vector<MyClass> vec;
vec.push_back(MyClass());
vec.push_back(MyClass());
vec.push_back(MyClass());