如何使转换运算符返回引用和非引用

时间:2014-02-26 01:06:43

标签: c++ templates

我有一个模板类,看起来像:

template<class T>
class A
{
  public:
     operator T() const {  return value;}
     operator T&() { return value;}

  private:
       T value;

}

似乎永远不会调用operatorT()const。甚至在这样的声明中

const int a = myA;

其中myA是A的实例。 上面的代码是否有问题?

1 个答案:

答案 0 :(得分:4)

只有在定义const A<T>类型的对象时,运算符才会生效。例如:

const A<int> myA;
int someInt = myA;

将致电operator T() const

而且,因为它当然是正确的 - 如Benjamin Lindley所指出 - 如果您通过const引用访问该对象。