当前位置: 首页 > 知识库问答 >
问题:

错误:没有重载函数"std::make_shared"的实例匹配参数列表

黄仲渊
2023-03-14

查看std:make_sharedvs std::shared_ptr的前一个堆栈问题,我试图在一个uni项目中实现它。这是之前的“问题”:

我想不出有什么情况

std::shared_ptr

将被优先考虑

自动对象=标准::使\u共享

因此,我采用了以下代码:

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\u shared用红色下划线标出,当我将鼠标移到它上时,会出现错误:“错误:没有重载函数的实例”std::make\u shared“与参数列表匹配”

我的代码使用第一行代码正确编译和执行,但如果我使用第二行,则会出现一些错误。

这些错误是:

'1

1.

1.

1.

1.

1.

1.

1.

1.

1.

1.

1.

1.

根据错误,std::make\u shared似乎最多只能有5个参数。不幸的是,我搜索过的其他网站并没有说明这个问题。任何帮助都将不胜感激。


共有1个答案

卓正业
2023-03-14

VS2012不完全支持可变参数模板。没有编译器支持-相反,它们在库中进行模拟,默认情况下最多5个参数。实际数字由宏_VARIADIC_MAX决定。在项目属性中将其定义为足够大的值。

 类似资料: