我最近遇到了这个代码,它是模板类的一部分:
operator T*();
我无法在SO或网上找到关于此的澄清。我一直无法弄清楚这个声明是如何运作的。
答案 0 :(得分:3)
它是一个隐式转换运算符,允许将对象转换为T *。
例如:
template<typename T>
class arrayOf10T
{
T data[10];
operator T*()
{
return data;
}
};
允许您将arrayOfT转换为int *,如下所示:
int* ptr = arrayOf10T<int>;
答案 1 :(得分:2)
这声明从类的类型到T*
的隐式转换(即指向T
的指针)。
使用这样的运算符,您的类(我们称之为foo
)可以按如下方式使用:
foo<int> f;
int *i = f; // calls f.operator int*()