问题描述
C ++ MyClass
在功能上与基于称为MyType_T
的类型定义结构的C“类”相同。 (C ++类基本上是旧C代码的包装。)我希望能够在以前可以通过MyClass*
传递的任何地方传递MyType_T*
。
我想编写任何MyClass *到MyType_T *的自动转换,但是我想我抛出的是我的类型转换器编写为使用MyClass
而不是MyClass*
。即使我确定这是问题所在,我也想不出什么语法可以解决。我曾考虑过对转换进行友善的实现,但是我不能将其放在class MyClass
的定义之前,因为它不知道thing
的偏移量。而且我不能放在class MyClass
的定义之后,因为MyClass
构造函数希望使用该转换。
typedef struct MyStruct {
int iFoo;
struct MyType* ptypeParent;
} MyType_T;
void MyTypeCreator( MyType_T* ptypeSelf,int iFoo_in,MyType_T* ptypeParent );
class MyClass {
public:
MyClass( int iFoo,MyClass* pclassparent ) {
MyTypeCreator( &thing,iFoo,pclassparent ); <--------------- PROBLEM
MyTypeCreator( &thing,&pclassparent->thing ); <------- WORKS
};
operator MyType_T*() { return &thing; } <---------------- INCORRECT: attempts to convert MyClass,not MyClass*,to MyType_T*.
MyType_T thing;
};
问题1:如何从MyClass *而不是MyClass编写转换器?
问题2:这样的转换器如何检查NULL输入? (如果东西的偏移量不是0,而是8,那么从NULL pclass进行转换而不进行检查将得到0x00000008的值,而不是NULL ...)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)