求助:char **转为const char **!

knpingan 2009-12-02 11:33:45
定义一个数组:
char *params[MAX_PARAMS_LEN];
经过对params的计算后,
需要传递给函数 f(const char *params[])。

我在VC6.0下这样使用:
f (¶ms[0])
编译无法通过:不能将从“char **”转换为“const char *[]”

在f(const char *params[])的定义不改变的情况下,
请教如何对params进行转换已达到上述目的。
谢谢!
...全文
220 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
sduxiaoxiang 2009-12-02
  • 打赏
  • 举报
回复
const cast
codebm 2009-12-02
  • 打赏
  • 举报
回复
强制转换喽``(const char **)params
shiweifu 2009-12-02
  • 打赏
  • 举报
回复
强制转换吧
kingpin1cn 2009-12-02
  • 打赏
  • 举报
回复
use "const cast" or "const char &"
Julykey 2009-12-02
  • 打赏
  • 举报
回复
貌似数组的要求比一般类型要严格呀
zhangshuai09 2009-12-02
  • 打赏
  • 举报
回复
你可以稍微把f的声明改一下,下面这种方法应该没有破坏你最初的想法吧
f(const char * const a[])

f(const char * const * a)
macrojj 2009-12-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 knpingan 的回复:]
暂时找个一个很笨的方法:
char ** tp1 = ¶ms[0];
const char **temp;
temp = (const char **)tp1;

然后把temp传递给函数f。
[/Quote]

也只好这样了
sduxiaoxiang 2009-12-02
  • 打赏
  • 举报
回复
那就强制转换
飞天御剑流 2009-12-02
  • 打赏
  • 举报
回复
f( ( const char** )params );
hai040 2009-12-02
  • 打赏
  • 举报
回复
直接传params不行?
ztenv 版主 2009-12-02
  • 打赏
  • 举报
回复
这样也没有什么不好吧?
knpingan 2009-12-02
  • 打赏
  • 举报
回复
暂时找个一个很笨的方法:
char ** tp1 = ¶ms[0];
const char **temp;
temp = (const char **)tp1;

然后把temp传递给函数f。
knpingan 2009-12-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sduxiaoxiang 的回复:]
const cast
[/Quote]
谢谢提供参考。
但是const case是用于去除const的,比如从const char *转为char *;
这个与我描述的相反了。
我想要的是“char **”转换为“const char *[]”
还是搞不定,望达人指点。

64,671

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧