C++:在类构造函数中填充向量后,向量成员被销毁
C++: Vector members destructed after vector populated in class constructor
是的,我已经搜索过了,但找不到答案。我有一个向量,它是一个类的成员。这个向量在类构造函数中给定了一些值(在本例中只有1)。构造函数一完成,就会调用向量中对象的析构函数。
这是我正在处理的的一个简短而甜蜜的版本
test.h
Class test
{
private:
Vector<Sprite> sprites;
public:
test(item _something);
}
test.cpp
test::test(item _something);
{
sprites.emplace_back(_device, tBank["TestTexture"]);
}
main.cpp
test testItem;
main()
{
testItem = testItem(something);
// This is where the destructor for sprite is called
}
我知道上面的代码不起作用,但这是正在发生的事情的简写。如果需要,我可以发布整个代码。不管怎样,我是在做什么疯狂的事吗?
首先,我假设testItem(something)
实际上是指test(something)
(还有许多其他明显的错误,例如,main()
需要返回int
,也就是说,这似乎不是真正的代码)。
将使用test(something)
创建的临时对象分配给testItem
时,对象将被复制或移动分配给testItem
,然后,临时对象将被销毁。编译器没有太多其他选择。如果test
类中没有复制构造函数或复制赋值,则可以移动包含的std::vector<Sprite>
。由于这不是真正的代码,所以很难说。
您所经历的是意料之中的:
Type t;
t = Type(arg);
第二行创建一个具有给定参数的Type
类型的对象,然后将其分配给t
变量。在完整表达式的末尾,临时表达式被销毁。
相关文章:
- 向量成员在管理类指针C++队列时丢失
- C++:更新类的向量成员变量
- C++ 入门 12.1:我可以在类中使用静态向量成员实现 StrBlob<string> 吗?
- 具有向量成员的基类<int>
- C++ 向量::使用类对象迭代器擦除不擦除向量成员
- 无法将类构造函数中新创建的对象复制到 C++ 中的向量成员
- 修改另一个类的向量成员时出错
- 返回对私有向量成员元素的非常量引用是否是一种不好的做法
- 如何在 C++ 中将结构类型向量数据输入到结构向量成员(嵌套结构向量)中
- std::向量成员变量 EXC_BAD_ACCESS
- 如何使用其定义附近的显式长度/值构造函数初始化向量成员变量
- "Empty"数组\向量成员 C++
- 如何使用初始值设定项列表初始化 2D 向量成员
- 如何在类定义中初始化向量成员变量
- 如何初始化结构的向量成员
- 使用向量<向量>成员实例化对象时的隔离错误<int>
- 为向量成员和更新元素指定默认值
- 保持类的向量成员与类实例连续
- C++:在类构造函数中填充向量后,向量成员被销毁
- 通过引用另一个类方法传递向量成员变量