Visual studio 2008 VS2008 C+中有关过载的问题+/CLI

Visual studio 2008 VS2008 C+中有关过载的问题+/CLI,visual-studio-2008,c++-cli,compiler-errors,Visual Studio 2008,C++ Cli,Compiler Errors,我写了一个管理GPU内存缓冲区的类 我有一种方法用于构建一个用CPU内存块初始化的缓冲区(如果pData为null,则分配的GPU内存块未初始化,剩余值不确定),还有一种重载用于构建一个用相同字节值初始化的缓冲区: IBuffer* CreateBuffer(IDevice* pDevice, int byteWidth, const void* pData); IBuffer* CreateBuffer(IDevice* pDevice, int byteWidth, byte fillVal

我写了一个管理GPU内存缓冲区的类

我有一种方法用于构建一个用CPU内存块初始化的缓冲区(如果pData为null,则分配的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的内容传递到一个插槽,该插槽可以采用
字节
常量void*
。常量值0x00可转换为
字节
常量void*
。这两种转换都不是首选的,因此编译器会在不明确的情况下出错

避免在C++/CLI程序中使用void*。IntPtr是明确的。是的,这几乎是我的想法。