如题,最近把一些C++的类转换为delphi的类,请问,有什么注意事项,最好有些例子哈。劳驾了。。

解决方案 »

  1.   

    1. 注意数据类型
    2. C语言中有多重继承,但是Delphi却只能单根继承
    3. C里面的友元,Delphi里面没有吧
    4. C里面有宏,Delphi也没有
    5. 继承的访问方式,也有一些不同
    这个不好举例吧,只好具体问题具体对待了,LZ加油。
      

  2.   

    比如,VC中的多继承在delphi中该怎么办呢?delphi中好像没有多继承。请各位大侠举例说明,谢谢
      

  3.   

    是啊,但是我还是必须把VC的多继承转换成delphi,该怎么办啊?
    比如,这样的:
    class H5_DLLCPP DataSet : public H5Object, public AbstractDs {
       public:   protected:
          private:
    }转换成delphi该怎么办呢?哪位大侠遇到过这种问题,麻烦指教..
      

  4.   

    DELPHI 不提供多继承, 那你就定多几次嘛...
    例如: class BaseA, class BaseBclass C: public BaseA public BaseB 这样的话, 在DELPHI就写成
    BaseB = class public BaseA
    end;C = class public BaseB
    end;这样C就有B也有A的内容了吧, 只是单纯要多写一次而已.DELPHI和VC, 类的写法在表面上注意的内容是比较少的. 但实现底层是极大不相同的.1. VC下, 虚表地址都是this指针下的第一个地址值, DELPHI下不是, 这样导致Interface类的相互使用时, 会有不同的方式, VC只要把类强制变换成Interface即可, DELPHI下, 虽然写法一样, 但内里DELPHI的接口地址跟实例的地址是不相同的.2. VC下, 函数默认是cdelc调用方式, DELPHI默认是fastcall, 并且DELPHI的fastcall别以为跟VC的fastcall就相同了, 完全不同的, DELPHI的self是用EAX传递的, VC的this, 好像是用ECX传递的. 最安全的做法是都采用stdcall3. VC下, 类函数指针有使用, 要自己显式声明和显式调用(用(this->)XXX), DELPHI的成员函数, 都可以由TMethod代替, 用法当然是DELPHI的方便得多了. 但要实现VC和DELPHI的成员函数能够相互调用, 则必须要写stdcall. 不用stdcall 得要自己写汇编代码调用函数.4. DELPHI下, 要注意其RTTI信息的编译, DELPHI的self指针下, 除了虚表, 还有RTTI信息表, 还有类继承信息表, 这些信息, 会有编译选项可以开启或关闭, 默认下开启, 这样导致VC里面某些类的使用会造成不同的写法.