如标题所述,当我尝试编译程序时,收到一条调试错误,提示:

Error   7   error C2446: '>=' : no conversion from 'DWORD' to 'const char *'

一些代码:
virtual CBaseDecorator* __Clone(CParticleInstance* pfi, CParticleInstance* pi)
{
    return new CTextureAnimationCWDecorator(
               fFrameTime,n,(BYTE*)((unsigned char*)pi+((BYTE*)pIdx-(BYTE*)pfi)));
}
virtual void __Excute(const CDecoratorData & d)
{
    fLastFrameTime -= d.fElapsedTime;
    while (fLastFrameTime<0.0f)
    {
         fLastFrameTime += fFrameTime;
          if (++(*pIdx) >= n) // error line
              *pIdx = 0;
    }
}
DWORD n;
float fLastFrameTime;
float fFrameTime;
BYTE* pIdx;
};

我该如何解决?

最佳答案

有一个简单的解决方案,您必须将BYTE类型转换为DWORD或类似的形式:

if (++(*pIdx) >= (BYTE)n) // error corrected

但这确实使我质疑您在做什么。 DWORD是BYTE类型的指针所指向的更大的存储-因此,此比较看起来很危险,当n> 255时,可能会发生细微的溢出错误。

另外,您对++运算符的滥用似乎令人困惑-您是否清楚该运算符不是将指针递增到下一个字节,而是递增当前指向的字节的值?

关于c++ - 无法从DWORD转换为const char *,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22980732/

10-11 23:10
查看更多