如何解决C ++:不是从obj1转换为obj2,而是从obj1 *转换为obj2?
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 举报,一经查实,本站将立刻删除。