我有两个第三方模块,必须将它们结合起来。首先,我从一个类中获取数据。我将这些数据提交给函数。
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 *
?
当且仅当via调用的函数_BASS_PluginLoad
不会改变所指向的内存时file
,您才能使用const_cast
:
HPLUGIN temp = _BASS_PluginLoad(const_cast<char*>(strPlugName),0);
由于关键字是C语言的较晚添加,因此某些旧的c API并不是const正确的const
。但是它们仍然不会改变其参数,因此aconst_cast
是在const正确的C ++包装器中使用它们的最简单方法。这是一个完全合理的理由(甚至是原因)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句