我有两个第三方模块,我必须将它们组合起来。 首先,我从一个类中获取数据。我会将这些数据提交给一个函数。
bool loadLibrary(const char *strPlugName){
HPLUGIN temp = _BASS_PluginLoad(strPlugName,0);
return false;
}
const char * strPlugName
是我从另一个库获得的值。我自己无法更改此值类型。
在函数内部我尝试调用 BASS 库函数。
HPLUGIN temp = _BASS_PluginLoad(strPlugName,0);
Definition: typedef HPLUGIN (*BASS_PluginLoad_Type)(char *file,DWORD flags);
这里 Xcode 告诉我:
Cannot initialize a parameter of type 'char *' with an rvalue of type 'const char *'
我的问题是如何将此 const char *
转换或转换为 char *
?
最佳答案
当且仅当通过 _BASS_PluginLoad
调用的函数不会改变 file
指向的内存时,您可以使用 const_cast
:
HPLUGIN temp = _BASS_PluginLoad(const_cast<char*>(strPlugName),0);
有些旧c由于 const
关键字是相当晚才添加到 C 语言中的,因此 API 的 const 不正确。但是它们仍然不改变它们的参数,所以 const_cast
是在 const 正确的 C++ 包装器中使用它们的最简单方法。这是该 Actor 阵容的完全正当理由(甚至可能是 原因)。
关于c++ - 使用 "const char*"和 "char*"参数连接两个第三方模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55468898/