从int到wchar_t的转换无效

时间:2016-07-12 12:54:14

标签: c++

这是我的文件代码。

File1.cpp

void CIME::AddExceptKey(wchar_t key)
{
    m_exceptKey.push_back(key);
}

File2.cpp

PyObject *imeAddExceptKey(PyObject *poSelf, PyObject *poArgs)
{
    int key;
    if(!PyTuple_GetInteger(poArgs, 0, &key))
    {
        return Py_BuildException();
    }

    CPythonIME::Instance().AddExceptKey(key);
    return Py_BuildNone();
}

这是我的警告:

warning C4242: 'argument': conversion from 'int' to 'wchar_t', possible loss of data

警告就在这一行:

CPythonIME::Instance().AddExceptKey(key);

我做错了什么?我尝试使用wchar_t密钥,但没有机会。

2 个答案:

答案 0 :(得分:0)

int的大小可以是2或4个字节,具体取决于实现,wchar_t的大小也在2,3或4个字节的数据之间变化。警告可能会丢失数据。你必须调试并查看是否有任何损失。

答案 1 :(得分:0)

如果没有强制转换,则不能使用需要wchar_t的int。

CPythonIME::Instance().AddExceptKey((wchar_t)key);

然而,我真的怀疑这是你想要做的。我不知道这些函数是做什么的,但是“GetInteger”和“AddExceptKey”表示你可能得到一个键码并按字符添加键。所以请在演出之前进行RTFM,否则可能会出现意想不到的行为。