加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 自动调用原始指针的自定义转换器A * < - > B *

发布时间:2020-12-16 03:34:21 所属栏目:百科 来源:网络整理
导读:是否可以在不同类型的原始指针A *和B *之间定义自定义转换器(converter1 T和converter2), 然后在某个类中创建所有函数(fa()和fb()) 使用适当的转换器(converter1 T或converter2)? 简而言之,我希望程序使用我的自定义函数将A *转换为B *,反之亦然. 我希望它
是否可以在不同类型的原始指针A *和B *之间定义自定义转换器(converter1< T>和converter2),
然后在某个类中创建所有函数(fa()和fb())
使用适当的转换器(converter1< T>或converter2)?

简而言之,我希望程序使用我的自定义函数将A *转换为B *,反之亦然.
我希望它能自动完成,以方便我.

class Manager{
    void fb(B* b){ /** something complex       */ }
    void fa(A* a){ /** different thing complex */ }
    void testCase(){
        A* a=   ... ;  
        fa(a);  
        fb(a);  //automatic convert to B* using "converter2" (wish)
        B* b=   ... ;
        fa(b);  //automatic convert to A* using "converter1" (wish)
        fb(b);
    }
    template<class T> T* converter1(B* b){  //hardcoded,non-static.
        return this->getId<T>(b);   
        //^^^ just an example to show how custom it is,//    currently T=A
    }
    B* converter2(A* a){  //hardcoded
        return a->getB();   
        //^^^ just an example to show how custom it is.
    }
}

真实情况有很多A – A1,A2,A3等.
A和B不是相互派生的.

我希望有办法.我想到指针的构造函数.

解决方法

不,这是不可能的.

指针是内置类型,只存在内置类型之间的内置转换.用户定义的转换仅适用于用户定义的类类型.

您可能希望切换到自己的智能指针品牌来处理这个问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读