我有以下代码:
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/