zhuwt2008
2015-06-11 15:47
采纳率: 95.1%
浏览 2.2k

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

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

6条回答 默认 最新

  • zhuwt2008 2015-06-12 14:53
    已采纳

    图片说明

    点赞 打赏 评论
  • 一枪尽骚丶魂 2015-06-12 00:46

    直接加上const的修饰符。

    点赞 打赏 评论
  • jianjian1992 2015-06-12 03:12

    从非const到const不应该是很合理的事吗?const常量和非const变量保存的地方不同吧,编译器处理时也不同,所以不会这样随便的自动转吧

    点赞 打赏 评论
  • zhuwt2008 2015-06-12 14:47

    #include
    #include
    using namespace std;

    class A
    {
    public:
    int ccc;
    int GetCCC()
    {
    return this->ccc;
    }
    };

    void fun(shared_ptr>>)
    {
    }

    int main()
    {
    shared_ptr>> a;
    fun(a);
    return 0;
    }

    这个例子怎么改来改去想让它尽可能像我的项目环境且重现我项目的那个错误,但就是怎么搞来搞去它都行,就是不会出错,而我项目却连编译都不行,而且就在调用的函数的这个地方编译不过的,提示参数类型的问题,很难找到原因,我干脆就将const都去掉了

    
    
    点赞 打赏 评论
  • Heart09 2015-06-14 06:09

    我觉得是那个const的位置在里面的原因,所以才会出现类型不匹配,如果在最外面,就应该不会提示了。

    点赞 打赏 评论
  • 帘卷西风 2015-06-17 11:08

    编译器自己进行的隐式转换才是不安全的,使用现在很多类型转换都推荐使用cast接口,而不是强转。
    const的声明其实是一个约定,更明确的说明应该怎么使用。

    点赞 打赏 评论

相关推荐 更多相似问题