Overcoming the Const Conundrum for Duplicate Getters
The dilemma arises when implementing getters in classes with both const and non-const versions. Compiling errors hinder the implementation of either method using the other. Additionally, casting is necessary to call the const version from the non-const one.
An Elegant Solution
Effective C proposes an unconventional yet effective solution: implement the non-const version by casting away the const from the const version. While not aesthetically pleasing, this approach guarantees safety since the calling function is non-const. Thus, casting away the const from the const object is permissible.
Example:
class Foo { public: const int& get() const { // Non-trivial work return foo; } int& get() { return const_cast<int&>(const_cast<const Foo*>(this)->get()); } };
The above is the detailed content of How Can I Efficiently Implement Both Const and Non-Const Getters in C ?. For more information, please follow other related articles on the PHP Chinese website!