ばかげた質問ですが、クラスFooがあるとしましょう。
class Foo
{
public:
typedef boost::shared_ptr<Foo> RcPtr;
void non_const_method() {}
void const_method() const {}
};
const Foo :: RcPtrを使用しても、非constメソッドがクラスで呼び出されるのを防ぐことはできません。コンパイルすると、次のようになります。
#include <boost/shared_ptr.hpp>
int main()
{
const Foo::RcPtr const_foo_ptr(new Foo);
const_foo_ptr->non_const_method();
const_foo_ptr->const_method();
return 0;
}
しかし、typedefにConstRcPtrという名前を付けると、私には、typedefが次のようになることを意味します。
typedef const boost::shared_ptr<Foo> ConstRcPtr;
これは私が興味を持っているものではありません。奇妙な名前ですが、おそらくもっと正確なのはRcPtrConstです。
typedef boost::shared_ptr<const Foo> RcPtrConst;
ただし、RcPtrConstのグーグルはヒット数がゼロであるため、これをtypedef名として使用することはありません:)
他に何か提案はありますか?