class SetBlocksTemperatureCommand : public QUndoCommand
{
public:
SetBlocksTemperatureCommand(const QList<Block *> &blocks, double temperature,
QUndoCommand *parent = 0);
void undo();
void redo();
private:
struct BlockWithOldTemperature {
BlockWithOldTemperature(Block *block, double new_temperature);
void restoreTemperature() {
m_block->m_temperature = m_old_t;
}
void applyTemperature() {
m_block->m_temperature = m_new_t;
}
private:
Block *const m_block;
const double m_old_t;
const double m_new_t; //хрень :(
};
QList<BlockWithOldTemperature> m_blocks;
double m_temperature;
};
А теперь, собственно, вопрос. Поле m_new_t будет одинаково для всех экземпляров класса BlockWithOldTemperature, созданных в одном и том же экземпляре класса SetBlocksTemperatureCommand (так просто получится по реализации). Возможно ли как-то сэкономить память и не класть в каждый экземпляр BlockWithOldTemperature по лишнему double'у?