用不同的对象实例化c++Vector
instantiating c++ Vector with different objects
我已经有几年没有接触C++了,我在本应轻松的任务上遇到了一些困难。我有一个Vector
的Object
对象。CCD_ 3构造函数采用X和Y坐标。对于Vector
中的每个Object
,我想用psuedo随机坐标实例化它。然而,我似乎无法使下面的代码为我工作。任何帮助都将不胜感激。
Image::Image(unsigned nObjects)
{
srand(2);
this->nObjects = nObjects;
objects.resize(nObjects);
for(int i = 0; i < nObjects; ++i)
{
objects.insert(new Object(rand(), rand(), rand(), rand()));
}
}
以下是如何在图像头文件中实例化矢量:
std::vector<Object> objects;
objects.reserve(nObjects);
for(int i = 0; i < nObjects; ++i)
objects.emplace_back(rand(), rand(), rand(), rand());
请注意,不能同时使用resize
和push_back
或emplace_back
new
返回一个指针,您有一个Object
值的向量,而不是指向Object
的指针。您不需要在堆上显式地分配Object
(除非您将以多晶型方式使用Object
),使用将项目添加到vector
objects.push_back(Object(rand(), rand(), rand(), rand()));
如果objects
是派生实例的集合,则需要使用以下
std::vector<std::unique_ptr<Object>> objects;
并使用添加项目
objects.push_back(std::make_unique<Some_derived_class>(rand(), rand(), rand(), rand()));
(如果您的库支持make_unique
,则可以自己滚动)。
如果您的库不支持unique_ptr
,请更新到支持的内容。
相关文章:
- 从C++实例化QML
- 设计一个只能由特定类实例化的类(如果可能的话,通过make_unique)
- 如何创建一个空的全局类并在启动时实例化它
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 约束和显式模板实例化
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- 错误 C2280 / 在 std::vector 中实例化对象时复制构造函数出现问题?
- 有没有一种优雅的方法可以从 std::vector 实例化 boost::array
- 实例化 std::vector 的唯一元素,而无需复制构造函数
- 在头文件中包含std::vector会导致模板实例化错误
- 如何实例化没有默认构造函数的类型的 boost::fusion::vector 成员变量
- std::vector 不保留在实现中实例化的推回对象
- 如何从 mpl::vector 实例化模板
- 使用重复将灵气存储到 std::vector 中会导致模棱两可的类模板实例化
- JNI - 从 C++ Vector 实例化 Java ArrayList
- 用不同的对象实例化c++Vector
- C++实例化 std::vector<std::string> 具有固定数量的空字符串
- 避免内联显式实例化的 std::vector<T> 代码?(Visual Studio C++ 2008)
- 用默认值在Struct中实例化2D Vector
- vector实例化的模板参数无效