我有以下代码:

STDMETHODIMP CWrapper::openPort(LONG* m_OpenPortResult)
{
    string str("test");
    const char * c = str.c_str();

    m_OpenPortResult=Open(c); //this does not work because "Open" returns an int

    return S_OK;
}

int Open(const char* uKey)
{

}

我无法将“int”转换为“LONG*”。
编译器告诉我“'int'不能转换为'LONG *'。

我也尝试使用 INT* 而不是 LONG*,但这也给了我一个错误。

有人能告诉我如何将 int 转换为 LONG* 或 INT* 吗?

最佳答案

你不需要转换任何东西。 LONG* 是指向 LONG 的指针,您可以将 int 分配给 LONG 。只需取消引用指针,然后您就可以分配它:

*m_OpenPortResult = Open(c); // <-- note the *

或者更安全:
if (!m_OpenPortResult) return E_POINTER;
*m_OpenPortResult) = Open(c);

甚至:
LONG ret = Open(c);
if (m_OpenPortResult) *m_OpenPortResult = ret;

关于C++ 将 int 转换为 *LONG,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21767370/

10-10 18:28
查看更多