是否可以在不同类型的原始指针 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.
}
}
真实案例有很多A
- A1
, A2
, A3
等等。
A
和 B
不是彼此派生的。
我希望有办法。我想到了指针的构造函数。
最佳答案
不,这是不可能的。
指针是内置类型,只存在内置类型之间的内置转换。用户定义的转换仅适用于用户定义的类类型。
您可能希望切换到您自己品牌的智能指针来处理此问题。
关于c++ - 自动调用原始指针的自定义转换器 A* <-> B*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39317779/