我有点挣扎.
宣布:
BYTE *pImage = NULL;
Run Code Online (Sandbox Code Playgroud)
用于通话:
m_pMyInterface->GetImage(i, &imageSize, &pImage);
Run Code Online (Sandbox Code Playgroud)
Visual C++ 2003编译器错误:
错误C2664:"CJrvdInterface ::的getImage":无法从"BYTE**__ W64"转换参数3"BYTE**"的引用不是为"const的"不能被结合到非左值
调用的方法定义为:
void CMyInterface::GetImage(const int &a_iTileId, ULONG *a_pulImageSize,
BYTE** &a_ppbImage)
Run Code Online (Sandbox Code Playgroud)
任何帮助非常感谢,伯特
因为GetImage可以修改它的第三个参数,所以你需要给它修改一些东西:
BYTE **ppImage = &pImage;
m_pMyInterface->GetImage(i, &imageSize, ppImage);
Run Code Online (Sandbox Code Playgroud)
这可能是你的函数返回后,即&pImage和ppImage可能不再是相同的(这也意味着,pImage和*ppImage可能会有所不同).如果你添加这个:
if (ppImage)
pImage = *ppImage;
Run Code Online (Sandbox Code Playgroud)
通话结束后,你应该好.
如果CMyInterface::GetImage你自己的功能,取决于你做什么,你可能能够改变它.在你的功能中,你做过:
a_ppbImage = ...;
Run Code Online (Sandbox Code Playgroud)
或者你只写:
*a_ppbImage = ...;
Run Code Online (Sandbox Code Playgroud)
如果您只执行后者而不是前者,则将引用传递给双指针是过度的.您可以将引用传递给单个指针(BYTE *&image),也可以传递双指针(BYTE **image)
| 归档时间: |
|
| 查看次数: |
1130 次 |
| 最近记录: |