我不理解为什么这个可以正常工作:
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;
};
};