C ++:不是从obj1转换为obj2,而是从obj1 *转换为obj2?

问题描述

MyClass的构造函数采用指向另一个此类对象的指针。

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 (将#修改为@)