【问题标题】:A vector of class objects, and their instantiation类对象的向量及其实例化
【发布时间】:2015-02-25 11:25:23
【问题描述】:

好的,所以我想要一个 std::vector 类对象。 它们将按需制作。

std::vector<VertexBuffer> vBuffs;

somwehere::someFunction()
{
   VertexBuffer vB;
   thisNthat = 10;

   vB.thisNthat = thisNthat;
   ......
   vBuffs.push_back(vB);


}

由于 vB 超出范围,vBuffs[vB location] 缓冲区会发生什么情况?

什么是做我想做的最好的方法。

vBuffs.push_back(VertexBuffer());

??

然后只是通过向量赋值? (或构造函数)。

【问题讨论】:

    标签: c++ class object vector std


    【解决方案1】:

    “由于 vB 超出范围,vBuffs[vB location] 缓冲区会发生什么?”

    自从push_back()

    vBuffs.push_back(vB);
    

    vB副本 放到vBuffs 中,在函数结束时超出范围是没有问题的。

    【讨论】:

    • 如果类包含指针是个问题吗?我编写了一个复制构造函数,可以像这样复制指针: *pVB = *copy.pVB;
    • @Rear-AdmiralFluff 你的课坏了,这是个问题。但是std::vector 通常不会被破坏(有些人可能会争辩std::vector&lt;bool&gt; 专业化是,但那是另一回事。)
    • @Rear-AdmiralFluff 这是另一种情况,您的复制构造函数可能是错误的。要正确维护类中的指针,您应该遵守The rule of Three
    • 破碎通常是一个问题,为什么这里有什么东西给你那种印象? *pVB = *copy.pVB 是否存在问题?
    • @Rear-AdmiralFluff 取决于这些成员的内存管理方式。但正如我所提到的,这是一个不同的问题,而不是你在这个问题中一直要求的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-22
    相关资源
    最近更新 更多