gpt4 book ai didi

c++ - GCC 问题 - 从 'void (*)(MyObject*, bool)' 到 'const void*' 的无效转换

转载 作者:行者123 更新时间:2023-11-30 04:34:41 24 4
gpt4 key购买 nike

我真的不想,但我必须在我的程序中模拟 COM 逻辑,并且我使用的是标准 COM_ADDREF 宏,但我不断收到以下错误:无效转换从“void ()(MyObject, bool)”到“const void*”...我应该怎么做?

#define COM_ADDREF(pObj, pMaster) ((pObj)->AddRef((pMaster), __FILE__, __LINE__, pObj))

class BaseComObject
{
public:
inline DWORD AddRef (const void* pMaster, const char* pFileName, int line, const void* pObj) const
{
iRefCount++;
return iRefCount;
};

inline DWORD GetRefCount() const
{
return iRefCount;
};

private:
long iRefCount;
};

class MyObject: public BaseComObject { };

void test (MyObject* pObject, bool bValue)
{
if (pObject)
{
COM_ADDREF (pObject, bValue);// error: invalid conversion from 'void (*)(MyObject*, bool)' to 'const void*'
}
}

错误:从“void ()(MyObject, bool)”到“const void*”的无效转换

错误:正在初始化“DWORD BaseComObject::AddRef(const void*, const char*, int, const void*) const”的参数 1

最佳答案

在我看来,这并不是生成该错误的代码。当我用 g++ 编译它时(修复 DWORD 等明显的错误并在 const 函数中修改类状态,它只是告诉我它找不到匹配的函数。

要点是您将 bool 作为第二个参数传递给 COM_ADDREF 并且基类 AddRef 函数实际上需要一个 void*在那个参数位置。我高度怀疑您有一个带有隐式 bool 构造函数的类,您没有向我们展示,这确实让编译器感到困惑。

关于c++ - GCC 问题 - 从 'void (*)(MyObject*, bool)' 到 'const void*' 的无效转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5832890/

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