jav*_*ver 6 c++ pointers casting
是否有可能定义一个自定义转换器(converter1<T>和converter2不同类型的原始指针之间)A*和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.
}
}
Run Code Online (Sandbox Code Playgroud)
真正的情况有很多A- ,,A1 等等.而且不是彼此派生的.A2A3
AB
我希望有办法.我想到指针的构造函数.
不,这是不可能的.
指针是内置类型,只存在内置类型之间的内置转换.用户定义的转换仅适用于用户定义的类类型.
您可能希望切换到自己的智能指针品牌来处理这个问题.