c++ - 'boost::make_shared':对重载函数的模糊调用

标签 c++ boost shared-ptr make-shared

我有以下类定义:

class Portal
{
   public:

   Portal( const vector<vec3> &vertices, shared_ptr<Sector> target );

   ...
};

在其他地方,我想像这样创建一个所述类的实例:

auto portal = make_shared<Portal>( portalVertices, target );

但是,我在 Visual Studio 2010 中收到以下错误消息:

error C2668: 'boost::make_shared' : ambiguous call to overloaded function

谁能告诉我为什么?我只定义了一个构造函数。谢谢!

最佳答案

当您使用关键字 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>( ... );
}

正如您提到的,您在 header 中指定了

using boost::make_shared;

我真的很想看看完整的头文件。正如我认为您实际上想要一个 using 指令,但最终得到了一个 using 声明。

看看这个描述:

使用指令:http://msdn.microsoft.com/en-us/library/aewtdfs3%28v=vs.80%29.aspx

使用声明:http://msdn.microsoft.com/en-us/library/was37tzw%28v=vs.80%29.aspx

关于c++ - 'boost::make_shared':对重载函数的模糊调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8356618/

相关文章:

c++ - GTEST - 限定名称未在 ':' 标记之前命名类

c++ - 使用 g++ 的 undefined symbol

c++ - 使用 Dijkstra 在 boost 图中查找最短路径

c++ - 使用 boost::enable_shared_from_this 时出现不完整的类型错误

c++ - enable_shared_from_this 中的空弱指针

c++ - 如何在 Qt/c++ 中使用多线程通过 Api 访问我的数据库?

c++ - 为什么调整指向 vector * 的指针(在 vector * 数组中)比 vector (在 vector 数组中)更快?

c++ - cpp_dec_float_50 的精度是多少?

c++ - Linux Ubuntu 14.04, boost 库和线程编译

c++ - 如何在 C++ 中将对来自一个 vector 的对象的引用存储在另一个 vector 中?