【发布时间】:2011-03-31 18:18:51
【问题描述】:
我正在构建一个引用计数系统并定义了一个原型模板类,它表示对将要使用的对象的所有引用。
我被卡住的地方是我必须区分通过引用访问这些对象的 const 和非 const 访问。如果访问是 const(只读,或者底层对象的调用方法被标记为 const),一切正常 - 但如果不是 - 可能必须先创建对象的副本。
我的参考类的简化版本:
template< class T >
class CRef
{
protected:
T* ptr;
public:
T* const* operator ->() const { return ptr; };
T* operator ->() { printf( "Non-const access!" ); return ptr; };
};
问题是,只有非常量 -> 运算符重载函数被调用,即使在访问底层对象类型的 const 函数时也是如此。
- 如何正确调用常量解引用重载函数?
【问题讨论】:
标签: c++