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

标签 c++ pointers casting

是否可以在不同类型的原始指针 converter1<T> 之间定义自定义转换器( converter2A* )和 B* ,
然后在某个类中创建所有函数( 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等等。
AB不是彼此派生的。

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

最佳答案

不,这是不可能的。

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

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

关于c++ - 自动调用原始指针的自定义转换器 A* <-> B*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39317779/

相关文章:

c++ - 如何优化这种简单的数据(事件)类型转换类?

c++ - void* 转换得到意外的输出

c++ - 为什么我的 C++ 程序不打印 LinkedList 的所有项目?

C++ - 引用,参数中的指针

C++: std::vector::reserve 在包含指针时不保留

c++ - 为什么c++没有默认初始化

c - 如何将指向结构数组的指针传递给函数

c - 将一般深度的嵌套指针传递给 C 中的函数

c++ - 一行调试宏

c++ - GCC 和 LLVM 中正则表达式的速度相差 1000 倍