C++ 类之间的双链转换
我有一系列的课程a,B,C 我想定义任意一对类之间的转换 转换必须遵循系列中类的顺序C++ 类之间的双链转换,c++,oop,type-conversion,multiple-inheritance,C++,Oop,Type Conversion,Multiple Inheritance,我有一系列的课程a,B,C 我想定义任意一对类之间的转换 转换必须遵循系列中类的顺序 例如,从a到C的转换有以下步骤: A转换成B B最后转换成C 类似地,从C到a的转换有以下步骤: 从C到B B到A 我试图修改我最后一个问题的答案: 但我只能得到从C到A的链式转换。 相反方向的链接转换不起作用 如何在两个方向上进行链式转换 测试(也在at) #包括 #包括 模板 结构转换链{ 模板> 算子T(){ 返回静态_cast(this)->运算符T2(); } }; 结构B; 结构C; 结构A
例如,从a到C的转换有以下步骤:
类似地,从C到a的转换有以下步骤:
我试图修改我最后一个问题的答案: 但我只能得到从C到A的链式转换。 相反方向的链接转换不起作用 如何在两个方向上进行链式转换 测试(也在at)
#包括
#包括
模板
结构转换链{
模板>
算子T(){
返回静态_cast(this)->运算符T2();
}
};
结构B;
结构C;
结构A{operator B();};
结构B:转换链,转换链{
算子A();
算子C();
};
结构C:转换链{
算子B();
};
A::运算符B(){
std::cout通过使A
继承自转换链来修复:
struct A : conversion_chain<A, B> { operator B(); };
struct A:conversion_chain{operator B();};
您是否尝试过从转换链继承A
?
<source>:49:11: error: conversion from 'A' to non-scalar type 'C' requested
C c = A(); // This line does not compile.
^~~
struct A : conversion_chain<A, B> { operator B(); };