Стремясь к правильности, я часто пишу такой код, как этот
class Bar;
class Foo {
public:
const Bar* bar() const { /* code that gets a Bar somewhere */ }
Bar* bar() {
return const_cast< Bar* >(
static_cast< const Foo* >(this)->bar());
}
};
для многих методов, таких как bar()
. Написание этих неконстантных методов, которые вызывают константные методы вручную, утомительно; кроме того, я чувствую, что повторяюсь - что мне плохо.
Что я могу сделать, чтобы облегчить эту задачу? (Макросы и генераторы кода не допускаются.)
Редактировать: Помимо решения Литба мне также нравится мое собственное. :)