初级C++:在不知道要创建多少对象的情况下在运行时创建对象
Beginner C++: object creation at runtime without knowing how many objects to create
假设我定义了一个名为"MyClass"的类。我的"main"方法将文件名列表作为参数。每个文件名都是MyClass的配置文件,但程序用户可以拥有任意数量的MyClass对象。如果他们输入两个文件名作为我的主方法的参数,我希望有两个对象。
如果我知道用户被限制为2个对象,我可以使用:
MyClass myclass1;
MyClass myclass2;
然而,如果用户改为输入3或4个文件名,这将不起作用。有人能帮助我并建议一种方法吗?我可以根据程序给出的参数数量来创建一个类的多个实例?
感谢
使用std::vector
。示例
#include <vector>
std::vector<MyClass> vec;
vec.push_back(MyClass());
vec.push_back(MyClass());
vec.push_back(MyClass());
之后,您可以通过[]
和迭代器等访问元素。网上有很好的参考资料。
您可以使用MyClass
实例中的std::vector
,然后您可以根据需要创建任意数量的实例。
例如,看看这个教程(网上有很多教程之一(,让你开始学习。
为此,您应该使用数组或向量:
vector<MyClass> myclass;
myclass.push_back( ... ); // Make your objects, push them into the vector.
myclass.push_back( ... );
myclass.push_back( ... );
然后你可以访问它们,比如:
myclass[0];
myclass[1];
...
有关更多信息和示例,请参阅维基百科:
http://en.wikipedia.org/wiki/Vector_%28C%2B%2B%29#Usage_example
相关文章:
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- c++, 在子类中,如何在没有对象的情况下访问父类的方法?
- 在这种情况下,java对象是否可以调用本机函数
- 如何在没有数据拷贝的情况下从指针创建一个Eigen VectorXd对象
- 在不复制临时对象的情况下延长其生存期
- 为什么我可以在不重载 "=" 运算符的情况下将一个对象分配给另一个对象?
- 如何在不销毁对象的情况下返回对象列表
- 在什么情况下,两个堆栈分配的结构对象的 this 点指向同一个地址?
- 如何在不使用指针的情况下将派生类的对象作为参数传递给基类中的函数?
- 在没有默认构造函数的情况下创建的派生对象
- 如何在不使用new的情况下保持在其他对象中创建的对象存活?
- 如何在没有 std::move 的情况下移动临时对象
- 如何在不复制的情况下操作 QByteArray 对象?
- 在单元测试中,如何在不使用 operator== 的情况下比较两个对象,这可能会错过新成员?
- 如何在不使用 "new" 关键字的情况下解除分配创建的对象的内存?
- 如何防止类中的类对象尝试在没有默认构造函数的情况下自动构造自身?
- 在没有堆的情况下用两种方法构造对象
- 我们可以在没有新实例化的情况下声明一个抽象方法来返回抽象超类中的子类对象吗
- C ++:如何在不创建对象的情况下在主函数中调用方法
- 在不放置新运算符的情况下,在预分配的内存上使用虚函数初始化对象 - 这可能吗?如果没有,为什么