boost::shared_array<char const *> x(new char const *[n]);
在上面的行中(n
是不大于 100 的整数),我正在创建char const**
( const char**
) 并将其放在智能指针x
中,以便在删除时x
删除数组。对我来说,这很明显是如何以及为什么起作用的。
boost::shared_array<char const *> x = new char const *[n];
现在让我们看看第二行。在我看来,我们所做的与第一种情况完全相同。是的,乍一看,我们似乎在这里我们通过NULL
(shared_array 构造函数参数的默认值)构造 x 然后调用operator=
,但这是错误的,并且我知道在这种情况下,而不是operator=
将使用constructor
由创建的指针调用new opeartor
。
但尽管如此,我得到了error C2440: 'initializing' : cannot convert from 'const char **' to 'boost::shared_array<T>
我看到的唯一问题是boost::shared_array<T>
. 但是不知道是什么问题?为什么显式构造函数会导致此错误?如果问题不在显式构造函数中,那么在哪里,为什么?