C++提升共享数组交换指针(简单问题)

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

Jam*_*lis 7

交换两个shared_array(或大多数其他Boost共享指针类型)的正确方法是使用swap成员函数:

src.swap(dest);
Run Code Online (Sandbox Code Playgroud)

这会交换每个shared_arrays 使用的指针和引用计数:

void swap(shared_array<T> & other)
{
    std::swap(px, other.px);
    pn.swap(other.pn);
}
Run Code Online (Sandbox Code Playgroud)