2D配列を受け入れる関数があります:
void foo ( double ** p )
{ /*writing some data into p*/ }
new
メモリ呼び出しを管理したくないので、生の 2D 配列をこの関数に渡したくありませんdelete
。また、関数の署名を に変更したくありませんvoid foo ( std::vector< std::vector<double> >& )
。foo
また、テンプレート関数として作成することはできません(私のプロジェクトでは COM インターフェイス メソッドです)。
次のように、生のものを装飾するRAIIオブジェクトを渡したいと思います
void foo ( double * p ){}
std::vectore<double> v(10);
p( &v[0] );
2D 配列に対してこれを行う方法はありますか? 私は試した
std::vector< std::vector<int> > v;
foo( &v[0][0] )
と
std::vector< std::tr1::shared_ptr<int> > v;
しかし、コンパイルエラーが発生しerror C2664 - cannot convert parameter
ます。
また、この場合、関数内の生のアドレス演算が正常に機能することを確認できますか?
C++11 はありません。2D 配列のサイズはわかっています。