ошибка компилятора для shared_ptr в Visual Studio 2010 - PullRequest
1 голос
/ 26 ноября 2011

Преобразование проекта из Codeblocks в Visual Studio Я столкнулся с этой загадочной ошибкой от компилятора:

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

Вот этот код в Boost 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 Ответ

4 голосов
/ 26 ноября 2011

Вы, вероятно, пытаетесь обменять два shared_ptr несовместимых типов. Убедитесь, что два shared_ptr указывают на объекты одного и того же / конвертируемого типа.

...