gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:49:23 24 4
gpt4 key购买 nike

我有以下类定义:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com