gpt4 book ai didi

visual-studio-2008 - 关于 VS2008 C++/CLI 中的重载问题

转载 作者:行者123 更新时间:2023-12-02 10:44:49 28 4
gpt4 key购买 nike

我编写了一个用于管理 GPU 内存缓冲区的类。

我有一种方法可以构建使用一 block CPU 内存初始化的缓冲区(如果 pData 为空,则分配的 GPU 内存块未初始化,保留不确定的值)以及使用相同字节值初始化的重载:

IBuffer* CreateBuffer(IDevice* pDevice, int byteWidth, const void* pData);
IBuffer* CreateBuffer(IDevice* pDevice, int byteWidth, byte fillValue);

用例是:
CreateBuffer(pDev, 512, pData); //OK
CreateBuffer(pDev, 512, nullptr); //OK
CreateBuffer(pDev, 512, 0xCD); //OK
CreateBuffer(pDev, 512, 0x01); //OK
CreateBuffer(pDev, 512, 0x00); //error: ambiguous call to overloaded function

当然,我可以强制转换或更改方法名称来解决问题。我只是想知道某个地方是否存在更严重的问题,或者它是否只是编译器限制/错误。

谢谢!

最佳答案

这是“设计”。在这种情况下,您试图将可能编译为 int 的内容传递给可以采用 byte 的插槽。或 const void* .常数值 0x00 可转换为 byteconst void* .这些转换都不是首选,因此编译器会产生歧义。

关于visual-studio-2008 - 关于 VS2008 C++/CLI 中的重载问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2014850/

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