void ParticleGeneratorController::generate() {
for(unsigned i = 0; i < generators.size(); i++) {
ParticleGenerator generator = *generators[i];
generator.update();
}
}
似乎調用複製構造函數或其他東西,但我沒有定義一個。我只有一個顯式的默認構造函數。爲什麼C++在迭代容器時調用複製構造函數?
https://github.com/ChrisLundquist/Waveform/blob/master/src/models/particle_generator.h
鑑於我上面的代碼,測試失敗。 https://github.com/ChrisLundquist/Waveform/blob/master/spec/controllers/particle_generator_controller_spec.cpp#L21
當作爲
void ParticleGeneratorController::generate() {
for(unsigned i = 0; i < generators.size(); i++) {
generators[i]->update();
}
}
寫入的測試通過。
爲什麼在第一個實現中調用了複製構造函數?它是如何由編譯器生成的?
或者用C++ 11'delete':http://en.wikipedia.org/wiki/C%2B%2B11#Explicitly_defaulted_and_deleted_special_member_functions – BoBTFish
@BoBTFish,啊是的,忘了所有關於那個(如果我是誠實的,還沒有機會實際使用它)。 – hmjd