愚蠢的问题,但说你有 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 名称 :)
有没有人有任何其他建议?