Я действительно не хочу, но я должен эмулировать логику 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 * "
ошибка: инициализация аргумента 1 'DWORD BaseComObject :: AddRef (const void *, const char *, int, const void *) const'