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,B,C

我想定义任意一对类之间的转换

转换必须遵循系列中类的顺序


例如,从a到C的转换有以下步骤:

  • A转换成B
  • B最后转换成C

  • 类似地,从C到a的转换有以下步骤:

  • 从C到B
  • B到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(); };