Предположим, есть два класса, таких как
class Locator
{
public:
// this goes to the specified latitide and longitude
bool GoToLocation(long lat, long longtd);
};
class HouseLocator : private Locator
{
public:
// this internally uses GoToLocation() after fetching the location from address map
bool GoToAddress(char *p);
}
Я делаю частное наследование, чтобы заблокировать GoToLocation () на HouseLocator, потому что это не имеет смысла и заставляет людей использовать надлежащий интерфейс.
Теперь мой вопрос, как я могу предотвратить этот тип кастинга?
HouseLocator *phl = new HouseLocator;
Locator *pl = (Locator*)phl;
pl->GoToLocation(10, 10);
Должен ли я просто документировать, чтобы не делать этого, а остальное оставить пользователю, я имею в виду, если он делает неправильный актерский состав, это его проблема?