微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。