我有两个类模板TemplateA<T>
和TemplateB<T>
. 现在,我想定义一个转换运算符,TemplateB<T>
以允许从TemplateB<T>
to进行隐式类型转换TemplateA<T>
。但是,以下代码会产生编译错误:
struct ClassA {};
template<typename T>
struct TemplateA {
T val;
};
template<typename T>
struct TemplateB {
T val;
template<typename ValT>
operator TemplateA() const {
TemplateA<ValT> a;
a.val = val;
return a;
}
};
int main() {
TemplateB<ClassA> b;
TemplateA<ClassA> a = b;
return 0;
}
错误:
main.cpp:13:12: error: expected type-specifier before 'TemplateA'
operator TemplateA() const {
^