我有一个模板类,方法如下:
operator T*() const {
return (T*)foo();
}
它返回什么,我如何调用这个方法?
这是一个用户定义的转换。这意味着它隐式地将类模板实例化的对象转换为不同的类型。在本例中,另一种类型是T*
。
下面是一个做作的例子:
template <typename T>
struct A {
T* data;
operator T*() const { // conversion to T*
return data;
}
};
int main() {
int i = 42;
A<int> a{&i};
int* p = a; // A converts to int* via `operator int*()`
// p points at i
}
上面的链接包含更多的示例和细节。