2011-11-26 123 views
1

从代码块转换项目到Visual Studio编译器错误我遇到了这个令人费解的错误由编译器:为shared_ptr的Visual Studio 2010中

Error 4 error C2228: left of '.swap' must have class/struct/union 
shared_ptr.hpp 

Error 3 error C2440: '<function-style-cast>' : cannot convert from 
'boost::shared_ptr<T>' to 'boost::shared_ptr<T>' shared_ptr.hpp 384 

下面是升压转换器的shared_ptr.hpp有问题的代码

template<class Y> 
shared_ptr & operator=(shared_ptr<Y> && r) // never throws 
{ 
    this_type(static_cast< shared_ptr<Y> && >(r)).swap(*this); 
    return *this; 
} 

我建立了一个类似但不太复杂的项目,并没有得到相同的错误。

+1

“shared_ptr”在哪里使用? –

+3

您能否提供代码将r值分配给某种shared_ptr的代码,并提供所涉及的类型。 – 111111

+0

shared_ptr遍布各处,我会检查所有的作业,看看我是否犯了一个错误 –

回答

4

您可能会尝试交换两个不兼容类型的shared_ptr。确保两个shared_ptr指向相同/可转换类型的对象。

+0

你钉了它。非常感谢。 –