gpt4 book ai didi

c++ - 如何在 ref 密封类中同时实现 IBuffer 和 IBufferByteAccess? (C++/客户体验)

转载 作者:太空宇宙 更新时间:2023-11-04 12:57:48 24 4
gpt4 key购买 nike

<分区>

如何在通用 Windows (C++/CX) 中同时实现 IBufferByteAccess 和 IBuffer?

根据 MSDN:

When you implement the IBuffer interface, you must implement the IBufferByteAccess interface, which is a COM interface for accessing the buffer directly. C++ callers use this interface to avoid making a copy of the buffer.

用下面的例子:

ref class BufferWrapper sealed :
public Windows::Storage::Streams::IBufferByteAccess,
public Windows::Storage::Streams::IBuffer
{
public:

// Inherited via IBufferByteAccess
virtual HRESULT QueryInterface(REFIID riid, void ** ppvObject) override;

virtual ULONG AddRef(void) override;

virtual ULONG Release(void) override;

virtual HRESULT Buffer(byte ** value) override;


// Inherited via IBuffer
virtual property unsigned int Capacity;

virtual property unsigned int Length;
}

IBuffer 没问题,但我在 IBufferByteAccess 上收到错误消息,即 C++/CX 映射引用类只能从另一个引用类或接口(interface)类派生。

当我删除 ref:

class BufferWrapper :
public Windows::Storage::Streams::IBufferByteAccess,
public Windows::Storage::Streams::IBuffer

IBufferByteAccess 没问题,但我从 IBuffer 收到错误消息,指出标准类无法从 C++/CX 类派生。

在头文件中我没有包含任何东西,在源文件中我只包含了我找到的头文件here

#include <robuffer.h>

我还找到了here这个 header 是我唯一需要包含的东西。

问题是(我认为)IBufferByteAccess 不是 ref 类,而是派生自 public IUnknown 的结构。是否有任何头文件带有我不知道的 IBufferByteAccess 的另一个定义,即引用类/接口(interface)?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com