【发布时间】:2013-10-19 01:22:04
【问题描述】:
查看A previous stack Question 的 std:make_shared 与 std::shared_ptr,我试图在 uni 项目中实现这一点。这是之前的“问题”:
我想不出任何情况
std::shared_ptr<Object> obj(new Object("foo", 1));会更喜欢
auto obj = std::make_shared<Object>("foo", 1);
因此我采用了以下代码:
std::shared_ptr<Triangle> pT1(new Triangle(pCanvas, 30, 30, 30, 60, 60, 30, 255, 0, 0));
并修改为这段代码:
auto pT1 = std::make_shared<Triangle>(pCanvas, 30, 30, 30, 60, 60, 30, 255, 0, 0);
但是,std::make_shared 带有红色下划线,当我将鼠标悬停在它上面时出现错误: "错误:没有重载函数实例 "std::make_shared" 匹配参数列表"
我的代码使用第一行代码可以正确编译和执行,但是如果我使用第二行,就会出现一些错误。
这些错误是:
`1>----- 构建开始:项目:SIT153Canvas,配置:调试 Win32 ------ 1> main.cpp
1>c:\users\steve\documents\visual studio 2012\projects\sit153canvas\main.cpp(54): 错误 C2780: 'std::shared_ptr<_ty> std::make_shared(_V0_t &&,_V1_t && ,_V2_t &&,_V3_t &&,_V4_t &&)' :需要 5 个参数 - 提供 10 个
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\memory(972) : 参见 'std::make_shared' 的声明
1>c:\users\steve\documents\visual studio 2012\projects\sit153canvas\main.cpp(54): 错误 C2780: 'std::shared_ptr<_ty> std::make_shared(_V0_t &&,_V1_t && ,_V2_t &&,_V3_t &&)' : 需要 4 个参数 - 提供 10 个
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\memory(972) : 参见 'std::make_shared' 的声明
1>c:\users\steve\documents\visual studio 2012\projects\sit153canvas\main.cpp(54): 错误 C2780: 'std::shared_ptr<_ty> std::make_shared(_V0_t &&,_V1_t && ,_V2_t &&)' : 需要 3 个参数 - 提供 10 个
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\memory(972) : 参见 'std::make_shared' 的声明
1>c:\users\steve\documents\visual studio 2012\projects\sit153canvas\main.cpp(54): 错误 C2780: 'std::shared_ptr<_ty> std::make_shared(_V0_t &&,_V1_t && )' : 需要 2 个参数 - 提供 10 个
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\memory(972) : 参见 'std::make_shared' 的声明
1>c:\users\steve\documents\visual studio 2012\projects\sit153canvas\main.cpp(54):错误 C2780:'std::shared_ptr<_ty> std::make_shared(_V0_t &&)':需要 1 个参数 - 提供 10 个
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\memory(972) : 参见 'std::make_shared' 的声明
1>c:\users\steve\documents\visual studio 2012\projects\sit153canvas\main.cpp(54): 错误 C2780: 'std::shared_ptr<_ty> std::make_shared(void)' : 预期0 个参数 - 提供 10 个
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\memory(972) : 参见 'std::make_shared' 的声明
根据错误,std::make_shared 似乎只期望最多 5 个参数。 不幸的是,我搜索过的其他网站并没有说明这个问题。 任何帮助将不胜感激。
【问题讨论】:
标签: c++ visual-studio-2012 c++11 shared-ptr make-shared