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

前端之家收集整理的这篇文章主要介绍了c – 自动调用原始指针的自定义转换器A * < - > B *前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否可以在不同类型的原始指针A *和B *之间定义自定义转换器(converter1< T>和converter2),
然后在某个类中创建所有函数(fa()和fb())
使用适当的转换器(converter1< T>或converter2)?

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

  1. class Manager{
  2. void fb(B* b){ /** something complex */ }
  3. void fa(A* a){ /** different thing complex */ }
  4. void testCase(){
  5. A* a= ... ;
  6. fa(a);
  7. fb(a); //automatic convert to B* using "converter2" (wish)
  8. B* b= ... ;
  9. fa(b); //automatic convert to A* using "converter1" (wish)
  10. fb(b);
  11. }
  12. template<class T> T* converter1(B* b){ //hardcoded,non-static.
  13. return this->getId<T>(b);
  14. //^^^ just an example to show how custom it is,// currently T=A
  15. }
  16. B* converter2(A* a){ //hardcoded
  17. return a->getB();
  18. //^^^ just an example to show how custom it is.
  19. }
  20. }

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

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

解决方法

不,这是不可能的.

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

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

猜你在找的C&C++相关文章