Поскольку вы используете ключевое слово auto, я предполагаю, что вы используете функции C ++ 11.
C ++ 11 также поставляется с std::make_shared
.
Итак, попробуйте добавить пространство имен:
auto portal = std::make_shared<Portal>( portalVertices, target );
или
auto portal = boost::make_shared<Portal>( portalVertices, target );
Итак, что я обычно делаю в своем коде / файле .C:
using namespace std; // this is a "using" directive
....
void somefunction() {
auto portal = make_shared<Portal>( ... );
}
Как вы упомянули, вы указали в своем заголовке
using boost::make_shared;
Мне бы очень хотелось увидеть полный заголовочный файл. Как я думаю, вы на самом деле хотели иметь директиву using, но в итоге получили декларацию using.
Посмотрите на это описание:
using
директива: http://msdn.microsoft.com/en-us/library/aewtdfs3%28v=vs.80%29.aspx
using
декларация: http://msdn.microsoft.com/en-us/library/was37tzw%28v=vs.80%29.aspx