【发布时间】:2015-08-28 18:39:26
【问题描述】:
我有两个类模板TemplateA<T> 和TemplateB<T>。现在,我想在TemplateB<T> 中定义一个转换运算符,以允许从TemplateB<T> 到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 {
^
【问题讨论】:
标签: c++ templates type-conversion implicit-conversion conversion-operator