不知道here發生的事情:我應該總是處理參考返回矢量嗎?
#include <iostream>
#include <vector>
class Voice
{
public:
double mValue = 0.0;
Voice() { }
Voice(const Voice ©) {
}
};
class VoiceManager
{
public:
std::vector<Voice> mVoices;
VoiceManager() {
mVoices = std::vector<Voice>(numVoices, Voice());
for (int i = 0; i < numVoices; i++) {
mVoices[i].mValue = 100.0;
}
}
private:
int numVoices = 16;
};
int main()
{
VoiceManager voiceManager;
Voice voice = voiceManager.mVoices[2];
std::cout << voice.mValue << std::endl;
}
我設置mValue
每個Voice
與運營商[]
價值100
,但是當我嘗試用相同的[]
操作檢索對象,現在看來,這不返回該元素?它打印0
相反,如果我這樣做:
Voice &voice = voiceManager.mVoices[2];
我終於可以看到更新後的值。
這裏發生了什麼?
什麼呢'聲音: :語音(語音常量&)'嗎? – LogicStuff
你的拷貝構造函數做錯了事;我懷疑修復它會解決你的問題。你可以忽略它並回退到隱式生成的那個;或者'mValue = copy.mValue;' –
你的拷貝構造函數實際上並不拷貝。只要擺脫它,並使用編譯器提供了一個會。 – NathanOliver