jbu*_*jbu 1 c++ arrays boost pointers shared
我是新手来增强共享阵列.
现有代码声明了两个数组:
boost::shared_array<unsigned char> src;
boost::shared_array<unsigned char> dest;
Run Code Online (Sandbox Code Playgroud)
我想做的就是交换每个数组指向的内容(src变为dest,dest变为src).据我所知,shared_array.get()方法返回一个指向其中一个元素的指针(可以是任何类型).
所以我添加的声明是:
boost::shared_array<unsigned char> temp;
Run Code Online (Sandbox Code Playgroud)
我添加的代码是:
temp.get() = src.get();
src.get() = dest.get();
dest.get() = temp.get();
Run Code Online (Sandbox Code Playgroud)
每条线都失败了; 编译错误是C2016:'=':左操作数必须是l值.
我是一个C++新手,所以我搜索了错误,看到该错误消息意味着左手操作数不可分配.然而,左侧是指针,指针可以分配给其他指针.
所以我不确定我做错了什么.有人可以帮帮我吗?
提前致谢.
JBU
交换两个shared_array
(或大多数其他Boost共享指针类型)的正确方法是使用swap
成员函数:
src.swap(dest);
Run Code Online (Sandbox Code Playgroud)
这会交换每个shared_array
s 使用的指针和引用计数:
void swap(shared_array<T> & other)
{
std::swap(px, other.px);
pn.swap(other.pn);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1700 次 |
最近记录: |