接口声明中的C ++实现代码

fpiette

我正在将d2d1_1.h头文件移植到Delphi中,并且陷入了接口声明中。在接口声明中,有一些使用实际实现代码重新声明的方法来调用。这是一个示例(我仅显示代码的相关部分):

// d2d1_1.h line 1522
interface DX_DECLARE_INTERFACE("e8f7fe7a-191c-466d-ad95-975678bda998") ID2D1DeviceContext  : public ID2D1RenderTarget
{
    // d2d1_1.h line 1715
    STDMETHOD_(void, SetRenderingControls)(
        _In_ CONST D2D1_RENDERING_CONTROLS *renderingControls 
        ) PURE;
    
    // Lot of declarations ommited for simplicity
    
    // d2d1_1.h line 2149
    COM_DECLSPEC_NOTHROW
    void
    SetRenderingControls(
        CONST D2D1_RENDERING_CONTROLS &renderingControls 
        )  
    {
        return SetRenderingControls(&renderingControls);
    }
}; // interface ID2D1DeviceContext

我知道该功能的第二个版本只是为了易于编程。实际上,实现给定接口的对象没有该第二版本的代码。在二进制级别的接口中没有插槽(接口被实现为指向方法的指针的数组)。移植到Delphi时,我只能忽略第二个版本。有人可以确认我的分析吗?

西蒙·莫里尔

最终COM vtable中仅确实存在标记有PURE(定义为=0)属性的方法

其他方法是实用程序方法/包装程序,其中包含只能在C / C ++中使用的C / C ++代码(它们将被编译),因此在使用其他语言(delphi,.NET等)时,请勿声明它们。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从Walkdir的文档中实现代码

来自分类Dev

从Walkdir的文档中实现代码

来自分类Dev

如何在Codeigniter中实现代码

来自分类Dev

如何在python列表理解中实现代码

来自分类Dev

Java:实现代码执行中的定期中断

来自分类Dev

声明接口并使用C ++中的多继承实现接口

来自分类Dev

声明接口并使用C ++中的多继承实现接口

来自分类Dev

如何在swift中调用协议中的默认实现代码?

来自分类Dev

如何使用实现代码在Dialogflow中设置agent.parameters?

来自分类Dev

如何在 Qulatrics 中循环数百张图像 - 实现代码所需的帮助

来自分类Dev

如何在JavaScript所见即所得编辑器中实现代码按钮

来自分类Dev

在基类中声明的C#接口方法无需在派生类中再次实现

来自分类Dev

在基类中声明的C#接口方法无需在派生类中再次实现

来自分类Dev

C++ - 实现 JS 的 setTimeout 的现代方法

来自分类Dev

在现代C ++中实现聚合的正确方法是什么?

来自分类Dev

没有Boost的现代C ++中的bimap实现

来自分类Dev

ANSI C中的接口/实现

来自分类Dev

在C ++中实现接口的问题

来自分类Dev

设计实现代码:静态还是动态?

来自分类Dev

IUserRepository,实现代码在哪里?

来自分类Dev

设计实现代码:静态还是动态?

来自分类Dev

无法在类实现通用接口方法中调用方法声明

来自分类Dev

如何声明给定的类实现了Facebook Flow中的接口?

来自分类Dev

无法在类实现通用接口方法中调用方法声明

来自分类Dev

如何声明给定的类实现了Facebook Flow中的接口?

来自分类Dev

在接口中声明常量,但在实现中定义

来自分类Dev

在扩展接口中声明成员与在实现中声明成员之间有什么区别?

来自分类Dev

在扩展接口中声明成员与在实现中声明成员之间有什么区别?

来自分类Dev

在F#中实现C#接口

Related 相关文章

  1. 1

    从Walkdir的文档中实现代码

  2. 2

    从Walkdir的文档中实现代码

  3. 3

    如何在Codeigniter中实现代码

  4. 4

    如何在python列表理解中实现代码

  5. 5

    Java:实现代码执行中的定期中断

  6. 6

    声明接口并使用C ++中的多继承实现接口

  7. 7

    声明接口并使用C ++中的多继承实现接口

  8. 8

    如何在swift中调用协议中的默认实现代码?

  9. 9

    如何使用实现代码在Dialogflow中设置agent.parameters?

  10. 10

    如何在 Qulatrics 中循环数百张图像 - 实现代码所需的帮助

  11. 11

    如何在JavaScript所见即所得编辑器中实现代码按钮

  12. 12

    在基类中声明的C#接口方法无需在派生类中再次实现

  13. 13

    在基类中声明的C#接口方法无需在派生类中再次实现

  14. 14

    C++ - 实现 JS 的 setTimeout 的现代方法

  15. 15

    在现代C ++中实现聚合的正确方法是什么?

  16. 16

    没有Boost的现代C ++中的bimap实现

  17. 17

    ANSI C中的接口/实现

  18. 18

    在C ++中实现接口的问题

  19. 19

    设计实现代码:静态还是动态?

  20. 20

    IUserRepository,实现代码在哪里?

  21. 21

    设计实现代码:静态还是动态?

  22. 22

    无法在类实现通用接口方法中调用方法声明

  23. 23

    如何声明给定的类实现了Facebook Flow中的接口?

  24. 24

    无法在类实现通用接口方法中调用方法声明

  25. 25

    如何声明给定的类实现了Facebook Flow中的接口?

  26. 26

    在接口中声明常量,但在实现中定义

  27. 27

    在扩展接口中声明成员与在实现中声明成员之间有什么区别?

  28. 28

    在扩展接口中声明成员与在实现中声明成员之间有什么区别?

  29. 29

    在F#中实现C#接口

热门标签

归档