简单的是/否问题(我认为)。如果我在文件范围声明以下内容:
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
对象。是否有隐藏的陷阱,我可能会失踪?如果需要,我会详细介绍。
答案 0 :(得分:3)
您的期望是正确的。您有16个默认构造的SoundTouchExt
实例(每个实例都包含一个默认构造的SoundTouch
实例)。
请注意,保留SoundTouchExt
引用需要小心,因为以某种方式修改向量(例如向其添加元素)可能会使引用无效。