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];
次に、2 行目を見てみましょう。ここでは、最初のケースとまったく同じことを行うと思います。はい、一見すると、ここで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>
。しかし、私は何が問題なのかわかりませんか?明示的なコンストラクターがこのエラーを引き起こすのはなぜですか? 問題が明示的なコンストラクターにない場合、どこで、なぜですか?