【发布时间】:2020-08-11 11:47:48
【问题描述】:
我正在将 Direct2D d2d1_1.h 头文件移植到 Delphi,但我遇到了一个声明。我不太明白(d2d_1.h中的Line 1522):
interface DX_DECLARE_INTERFACE("e8f7fe7a-191c-466d-ad95-975678bda998") ID2D1DeviceContext : public ID2D1RenderTarget
{
STDMETHOD(CreateBitmap)(
D2D1_SIZE_U size,
_In_opt_ CONST void *sourceData,
UINT32 pitch,
_In_ CONST D2D1_BITMAP_PROPERTIES1 *bitmapProperties,
_COM_Outptr_ ID2D1Bitmap1 **bitmap
) PURE;
using ID2D1RenderTarget::CreateBitmap; //<<<<<====== This line
// More code deleted for simplicity
}; // ID2D1DeviceContext
在Delphi中,接口声明中没有“using”关键字这样的概念。
我的问题是:我应该忽略这一行,因为 C++ 编译器有一些魔力,还是应该复制 ID2D1RenderTarget::CreateBitmap 声明?
IMO 接口实际上是一个指向所有方法的指针数组。所以我想我必须从继承的接口中重现声明,以便他的插槽被占用。
【问题讨论】:
-
这是 C++ 而不是 C,因此我已经更正了标签。您可以通过网络搜索了解使用方式。请务必注意,该语言是 C++。
-
感谢@David Heffernan,但问题不在于它在 C++ 中的作用。我在文档中读到了。问题是如何翻译成缺乏使用关键字概念的Delphi。我认为有两种解决方案 - 正如我已经提到的 - 要么忽略该行,要么复制引用的声明。
-
问题是关于 C++ 代码的含义。当你明白你知道如何翻译到 Delphi 时。