Не уверен 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];
я могу, наконец, увидеть обновленное значение.
Что здесь происходит?
Что 'Голос: : Голос (голос const &) 'делать? – LogicStuff
Ваш конструктор копий делает не то, что нужно; Я подозреваю, что исправление проблемы поможет вам решить эту проблему. Вы можете опустить его и вернуться к неявно созданному; или do 'mValue = copy.mValue;' –
Ваш конструктор копий на самом деле не делает копию. Просто избавитесь от него и используйте предоставленный компилятором тот, который будет. – NathanOliver