ボタンクラスにmap<int, Button*>
はいくつかの属性、特に位置という名前の整数変数があります。
Button クラスの 2 つの位置を入れ替えたい場合は、キーを変更する必要があります。常にキー = ボタン -> 位置になるようにし、マップにする必要があります。
マップの 2 つの位置を削除し (消去を使用)、再挿入 (インデックスを示す) することを考えました。
例 (indexFirst と indexSecond は既知):
map<int, Button*> buttons;
int posOfFirst = buttons.find(indexFirst)->second->getPos();
int posOfSecond = buttons.find(indexSecond)->second->getPos();
Button* button1 = buttons.find(indexFirst)->second;
Button* button2 = buttons.find(indexSecond)->second;
buttons.erase(indexFirst);
buttons.erase(indexFirst);
buttons[posOfSecond] = button2;
buttons[posOfFirst] = button1;
しかし、オブジェクトを変更しないようです。なんで?