这不起作用:
std::shared_ptr <char[]> ptr(new char[100]);
ptr[10] = '\0';
这有效:
std::unique_ptr <char[]> ptr(new char[100]);
ptr[10] = '\0';
我得到compliler错误C2676,意思是“没有定义此运算符或转换为预定义运算符可接受的类型”。知道为什么会这样吗?
答案 0 :(得分:3)
所以有些想法:
std::shared_ptr<char[]> ptr(new char[100]);
本身应该是语法错误。unique_ptr
已启用以支持std::unique_ptr<char[]>
语法。可以找到一些基本原理here。std::shared_ptr<T>::operator[]
调用也不起作用,因为std::shared_ptr
没有实现,只有std::unique_ptr
。