你是说,有个函数是这样:
void func(shared_ptr<const vector<shared_ptr<OBXX>>> arr);
你这样调用:
shared_ptr<vector<shared_ptr<OBXX>>> arr;
func(arr); // 编译提示语法错误?
是这样吗?
是的,问题就是这样
@Patrickz10: 你能把编译提示的错误给贴出来吗?
@Launcher: 就是说什么未供处理的异常:0xC0000005吧,问题刚找到了,参数传递是可以的,但是在调用那个函数func之后,arr就变成不能操作了,操作就报错
@Launcher: 还是有蹊跷,模拟例子和我项目环境复杂性相差太远,例子怎么搞都行,在我项目却连编译都不行,很难找到原因,我干脆就将const都去掉了
@Patrickz10: 你得分清楚编译时和运行时,0xC0000005 这个是运行时错误,"连编译都不行", 这是编译时错误,编译时错误 VS 会给出具体的描述,通过描述才能知道具体的语法错误是啥。如果你看不懂编译时的错误描述,你可以贴出来,你不贴出来,或者你都看不懂,你自然很难找到原因。
不可以,常量描述,肯定只能在定义时使用,因为他的存储方法编译方式和变量都是不一样的