を取得関数にNULLを送りますか?あなたはconst&
としてfill
ベクトルを取ったほうが良いでしょうカントは、私はこの機能を持っているベクトル
MatrixInit(numRow, numCol, std::vector<double>())
注:ベクトルとしてNULLを渡すことはできません
を取得関数にNULLを送りますか?あなたはconst&
としてfill
ベクトルを取ったほうが良いでしょうカントは、私はこの機能を持っているベクトル
MatrixInit(numRow, numCol, std::vector<double>())
注:ベクトルとしてNULLを渡すことはできません
、あなたの代わりに、このような空のベクトルを渡すことができます。
おそらく、関数がベクトルを変更することになっています。 – wilhelmtell
ああですか?そのための参照はなく、私は、行列の初期値がfillであると仮定しました。それが当てはまる場合は、もちろん&constではなく&である必要があります。 –
@wilhelmtell、オリジナルは値渡しだったのでベクトルを変更できませんでした。 –
NULL
に合格するためには、あなたが例えば、代わりにvector*
ポインタを受け入れるようにパラメータを変更する必要があります。
void RegMatrix::MatrixInit(int numRow, int numCol, std::vector<double> *fill)
{
if (fill != NULL)
{
do something with fill;
}
}
あなたはベクトルに合格する必要がある場合、あなたはこのようにそれを行うだろう。
std::vector<double> v;
MatrixInit(numRow, numCol, &v);
特殊なケースを表す値が必要な場合は、静的変数を作成してテストすることができます。
static std::vector<double> null_fill;
void RegMatrix::MatrixInit(int numRow,int numCol, const std::vector<double> & fill = null_fill)
{
if (&fill == &null_fill)
// do something special
else
// do something;
}
名前が言うようにあなたはそれはオプションの引数ですが、引数の型boost::optional<std::vector<double> >
作ることができます。引き数を使用しない場合は、代わりにboost::none
を渡します。 (NULL
ではありません;これはヌルポインタ定数です。ここではポインタは使用していません)。
NULLはベクトルではありません。あなたは、そのパラメータにNULLを渡すと、何を意味するのでしょうか? –
私はJavaから来ています。ここではC++のハードな世界です。空のベクトルです。 – Itzik984
また、nullポインタもJavaの空のベクトルではありません。 –