向量中对象的初始化

时间:2014-01-11 17:08:34

标签: c++

简单的是/否问题(我认为)。如果我在文件范围声明以下内容:

struct SoundTouchExt
{
    SoundTouch sTouch;
    int channels;
    int sampleRate;
    float tempoChange;
    int pitchSemi;
    int bytesPerSample;
};

const int MAX_TRACKS = 16;

vector<SoundTouchExt> sProcessors(MAX_TRACKS);

SoundTouch是一个带有公共默认构造函数的类,当我在函数中执行此操作时,是否应该获得有效对象:

SoundTouchExt& soundTouch = sProcessors.at(0);
SoundTouch& sTouch = soundTouch.sTouch;

我希望sTouch是使用默认构造函数构造的SoundTouch对象。是否有隐藏的陷阱,我可能会失踪?如果需要,我会详细介绍。

1 个答案:

答案 0 :(得分:3)

您的期望是正确的。您有16个默认构造的SoundTouchExt实例(每个实例都包含一个默认构造的SoundTouch实例)。

请注意,保留SoundTouchExt 引用需要小心,因为以某种方式修改向量(例如向其添加元素)可能会使引用无效。