尝试匹配函数参数无效*和时出错
Getting error trying to match function parametr void*&
我正在尝试使用函数获取EnvironmentMap
bool SILVERLINING_API GetEnvironmentMap(void *&texture, int facesToRender = 6);
我正在使用OpenSceneGraph,这是一个基于OpenGL的API。功能描述上写着:
\param texture指向包含立方体贴图的平台特定纹理句柄的指针。在OpenGL上,这是一个GLuint;在DirectX9上,它是LPDIRECT3DCUBETEXTURE9;在DirectX10上,它是一个ID3D10ShaderResourceView*;在DirectX11上,它是一个ID3D11ShaderResourceView*。
所以我正在尝试这样的代码:
GLuint id;
silverLining->atmosphere()->GetEnvironmentMap(id);
我得到了错误:"无法将参数1从'GLuint'转换为'void*&'"也是如此
GLuint *id;
silverLining->atmosphere()->GetEnvironmentMap(id);
所以我想,当我和描述一起做的时候,它不起作用,也许有一些特殊的方法来处理参数,比如"void*&"?
关于我应该朝哪个方向看,有什么建议吗?
C++是强类型语言,因此类型必须匹配。在第一个例子中,尝试将GLuint类型的对象提供给一个接受void*的函数。在第二个例子中,您将指向GLuint的指针提供给相同的函数。
实现这一点的唯一方法是为GetEnvironmentMap函数提供void*类型的东西(或者可以隐式转换为它的东西)。
编辑:若您使用OpenGL,GetEnvironmentMap函数会欣然接受指向GLuint的指针作为第一个参数,但它必须被强制转换(为void*),并且必须有效。可能对你有帮助的代码是
GLuint myEnvironmentMapTex;
silverLining->atmosphere()->GetEnvironmentMap((void*)&myEnvironmentMapTex);
Void*是一个指针,指向一些没有人知道保存什么的内存(它丢失了任何类型信息-"Void==no type")。点击此处阅读更多:指向void 的指针
相关文章:
- Openssl 1.1.1d无效使用不完整的类型"struct dsa_st"
- 访问者访问变体并返回不同类型时出错
- 在Linux for Windows上编译C++代码时出错
- 无法访问嵌套类.类的使用无效
- 读取文件的最后一行并输入到链接列表时出错
- 重载操作程序时出错>>用于类中的字符串 memebr
- 调用专用模板时出错"no matching function for call to [...]"
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- LINK 尝试使用 OpenSSL evp aes 256 c++ 时出错
- 在Google Kick start中提交时出错
- 在c++中访问int到类对象的映射时出错
- 写入 -: 参数无效 } 时出错
- 非常量引用类型的无效初始化中出错.在Linux操作系统中使用c++代码.GCC编译器
- main.cpp|15|错误:从 'const char*' 到 'char' 的转换无效 [-允许]|制作游戏时出错
- 尝试匹配函数参数无效*和时出错
- 初始化类型的非常量引用无效时出错
- 类型'int&'的引用初始化无效,传递参数 1 时出错
- 编译C++代码时出错(转换无效)
- C++SDL2尝试渲染SDL_Texture时出错:无效纹理
- 在数组中插入数据时出错 - 数组下标'int[int]'的类型无效