我有两个类模板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 {
^
最佳答案
I want to define a conversion operator in
TemplateB<T>
to allow implicit type conversions fromTemplateB<T>
toTemplateA<T>
这不需要转换函数模板。一个简单的转换函数就可以了:
operator TemplateA<T>() const {
TemplateA<T> a;
a.val = val;
return a;
}
仅当您想要允许从 TemplateB<Foo>
进行转换时才需要模板至TemplateA<Bar>
.
关于c++ - 类模板中的转换运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32277747/