Существует проблема с вашим кодом, подчеркнутая ответами. Проблема заключается в упорядочении значений.
Однако вы были почти там:
class AshtonKutcher
{
public:
int getValue() const { return m_value; }
int& getValue() { return m_value; }
private:
int m_value;
};
Теперь у вас точно такой же макет, потому что у вас одинаковые атрибуты, объявленные в том же порядке и с одинаковыми правами доступа ... и ни у одного объекта нет виртуальной таблицы.
Таким образом, хитрость заключается не в изменении уровня доступа, а в добавлении метода:)
Если, конечно, я что-то пропустил.
Я уточнил, что это был кошмар обслуживания?