gpt4 book ai didi

c++ - 类模板中的转换运算符

转载 作者:行者123 更新时间:2023-11-30 02:36:51 25 4
gpt4 key购买 nike

我有两个类模板 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 from TemplateB<T> to TemplateA<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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com