c++ - 使用 "const char*"和 "char*"参数连接两个第三方模块

标签 c++

我有两个第三方模块,我必须将它们组合起来。 首先,我从一个类中获取数据。我会将这些数据提交给一个函数。

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);

有些旧由于 const 关键字是相当晚才添加到 C 语言中的,因此 API 的 const 不正确。但是它们仍然不改变它们的参数,所以 const_cast 是在 const 正确的 C++ 包装器中使用它们的最简单方法。这是该 Actor 阵容的完全正当理由(甚至可能是 原因)。

关于c++ - 使用 "const char*"和 "char*"参数连接两个第三方模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55468898/

相关文章:

C++图像内核环绕卷积

c++ - OpenCV 3.4/c++ CascadeClassifier 使用旧的 xml 文件

c++ - 什么是可移植的轻量级 C/C++ 正则表达式库?

c++ - 使用 Boost.Polygon 对曼哈顿多边形进行切片

c++ - C++ 中模板化对象的模板化列表

c++ - 在 C++ 中做某事两次的习语

c++ - HDF5 - C++ - 打开文件读取内容失败

c++ - N 位环绕的整数减法

c++ - 在 C++ 中将 hexbin 或十进制字符串转换为 long long

c++ - 官方ZeroMQ多线程示例的修改版本崩溃