Не имеет смысла получать доступ к вашим элементам управления на одной карте, потому что они имеют различный тип, что означает, что вы не можете выполнять одни и те же методы на них и т. Д. *
Что вы можете сделать, это определить общий класс, содержащий элементы, которые должен иметь каждый элемент управления, а затем получить специальные элементы управления из этого класса:
template<class T>
class guiControl
{
T minValue;
T defaultValue;
/* ... */
}
Пример для элементов управления:
class Button : public guiControl<int>
{
/* ... */
int get_id() { return id; }
}
Тогда вы все еще можете сделать карту идентификаторов и указателей на ваши объекты, когда вы приведете указатели объектов к типу базового класса:
map<int, guiControl<int>* > controls;
Button button;
controls[button.get_id()] = dynamic_cast<guiContorl<int>*>(&button);
Теперь вы можете получить доступ к guiControl
членам (например, minValue
) ваших элементов управления по идентификатору и даже привести их к их производному типу, но тогда вам нужно будет знать, к какому типу они относятся.