【发布时间】:2020-01-27 23:59:09
【问题描述】:
我不明白为什么这样可以正常工作:
std::array<double, 2> someArray = {0,1};
std::shared_ptr<MyClass> myobj = std::make_shared<MyClass>(someArray);
但这不起作用:
std::shared_ptr<MyClass> myobj = std::make_shared<MyClass>({0,1});
编译器说:
too many arguments to function ‘std::shared_ptr< _Tp> std::make_shared(_Args&& ...)
...
candidate expects 1 argument, 0 provided
问题:有人能解释一下为什么会发生这种情况吗?是否有任何方法可以在不定义额外变量的情况下修复第二种方法?
编辑:
MyClass 示例:
#include <memory> //For std::shared_ptr
#include <array>
#include <iostream>
class MyClass{
public:
MyClass(std::array<double, 2> ){
std::cout << "hi" << std::endl;
};
};
【问题讨论】:
-
什么是 MyClass?
-
...它的构造函数是什么样的?
标签: c++ c++11 std shared-ptr