首页 新闻 会员 周边 捐助

const参数的问题,如何转换加上const?(c++)

0
悬赏园豆:5 [已关闭问题] 解决于 2015-06-12 23:00

某一函数需要 类型为 shared_ptr<const vector<shared_ptr<OBXX>>>的参数,我的程序需要组装这一参数,所以声明时是shared_ptr<vector<shared_ptr<OBXX>>>,没有其中的const,等我得到值之后要传入,总是报告参数类型不正确,从非const到const不应该是很合理的事吗(又不是从const到非const)?为什么还要求转换?这不是c++语言应该处理的事情吗?如何转换呢?

Patrickz10的主页 Patrickz10 | 初学一级 | 园豆:7
提问于:2015-06-11 23:57
< >
分享
其他回答(1)
0

你是说,有个函数是这样:

void func(shared_ptr<const vector<shared_ptr<OBXX>>> arr);

你这样调用:

shared_ptr<vector<shared_ptr<OBXX>>> arr;

func(arr); // 编译提示语法错误?

是这样吗?

Launcher | 园豆:45050 (高人七级) | 2015-06-12 09:24

是的,问题就是这样

支持(0) 反对(0) Patrickz10 | 园豆:7 (初学一级) | 2015-06-12 11:52

@Patrickz10: 你能把编译提示的错误给贴出来吗?

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-06-12 13:21

@Launcher: 就是说什么未供处理的异常:0xC0000005吧,问题刚找到了,参数传递是可以的,但是在调用那个函数func之后,arr就变成不能操作了,操作就报错

支持(0) 反对(0) Patrickz10 | 园豆:7 (初学一级) | 2015-06-12 22:34

@Launcher: 还是有蹊跷,模拟例子和我项目环境复杂性相差太远,例子怎么搞都行,在我项目却连编译都不行,很难找到原因,我干脆就将const都去掉了

支持(0) 反对(0) Patrickz10 | 园豆:7 (初学一级) | 2015-06-12 22:46

@Patrickz10: 你得分清楚编译时和运行时,0xC0000005 这个是运行时错误,"连编译都不行", 这是编译时错误,编译时错误 VS 会给出具体的描述,通过描述才能知道具体的语法错误是啥。如果你看不懂编译时的错误描述,你可以贴出来,你不贴出来,或者你都看不懂,你自然很难找到原因。

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-06-15 09:17
-1

不可以,常量描述,肯定只能在定义时使用,因为他的存储方法编译方式和变量都是不一样的

吴瑞祥 | 园豆:29449 (高人七级) | 2015-06-12 09:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册