У меня есть карта указателей базового класса, и мне нужно применить функцию класса к отображаемым данным.Как применить функцию к указателю базового класса с карты?
Я имею дело с фигурами, которые пользователь вводит, а затем имеет возможность манипулировать ими (переводить, вращать ...). У меня есть функции, которые управляют фигурами, а фигуры хранятся на карте.
Я борется с доступом и манипулированием отображаемыми фигурами.
У меня есть следующий код;
polygon * T;
map<string, polygon*> shape_map;
new_shape = Trans + user_input; // adds Tranaslated to the key
cout << "ID " << new_shape << " = " << endl; // ouput the key witch also id's the shape
T = shape_map[user_input]->translate(matrix(Xtrans, Ytrans));
T->printshape();
Когда я запускаю мой код программа останавливается как раз перед он должен напечатать форму, и когда я отладки он выделяет строку в моей функции перевода, но я уверен, что мой перевод функция хорошо, как я испытал это раньше.
Я думаю, проблема в том, как я называю функции, но я не уверен.
Любая помощь будет замечательной!
Я не вижу, где вы разместили new_shape на карте. Я предполагаю, что вы ожидаете, что shape_map [user_input] вернет new_shape. –
Да. Я хочу избежать добавления новой переведенной формы в shape_map, поскольку я хотел бы показать ее пользователю, а затем спросить, хотят ли они сохранить форму. – Peter
Функция translate возвращает тип того, на что он действует (типы фигур являются производными классами из многоугольника, который является абстрактным базовым классом). – Peter