Иногда удобно разделить интерфейс некоторой системы/библиотеки более чем на один класс.
Например, рассмотрим идею библиотеки для игры в шахматы. Его интерфейс будет использовать (и доставлять игрокам) разные объекты для каждой отдельной игры и — во время игры — еще один объект для каждой фигурки.
В Java такой проблемы не было бы. Но в C++ пользователь библиотеки может удалить (или попытаться удалить) каждый указатель, который он получит. Даже shared_ptr
/weak_ptr
.
Что вы думаете о таких ситуациях? Должен ли я использовать в своем интерфейсе классы-оболочки, удаление которых не опасно?
Каков обычный путь для таких дилемм?
Есть ли способ, которым умные указатели STL помогут? Я слышал, что их следует использовать всегда и только для выражения права собственности, поэтому они, кажется, не имеют ничего общего с этой проблемой (Chess
является владельцем SingleGame
, SingleGame
является владельцем каждого Figure
).
PS я использовал правильные теги/тему?
int k; delete &k;
, но я говорю о том, что мы можем рассматривать как часть публичного интерфейса. Последнее, о чем я думал, я хотел четко знать, как программисты смотрят на такие проблемы. Теперь я знаю, что это не очень важно. Хотя я нашел кое-что, что должно помочь кому-то педантичному: частный-оператор-удалить 03.07.2014