简单的是/否问题(我认为)。如果我在文件范围内声明以下内容:
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 是一个具有公共(public)默认构造函数的类,当我在函数中执行此操作时是否应该获得有效对象:
SoundTouchExt& soundTouch = sProcessors.at(0);
SoundTouch& sTouch = soundTouch.sTouch;
我期望 sTouch
是一个使用默认构造函数构造的 SoundTouch
对象。有没有我可能会遗漏的隐藏陷阱?如果需要,我会详细介绍。
最佳答案
您的期望是正确的。您有 16 个默认构造的 SoundTouchExt
实例(每个实例都包含一个默认构造的 SoundTouch
实例)。
请注意,保留 SoundTouchExt
引用 需要小心,因为以某些方式修改 vector (例如,向其添加元素)可能会使引用无效。
关于c++ - vector 中对象的初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21065254/