1

配列とベクトルの交点を取得しようとしています。cplusplus.com が例を示しているため、両方をベクトルにすることにしました。

これは私が得るエラーメッセージです:

ここに画像の説明を入力

ここに私のコードがあります:

ここに画像の説明を入力

関数はgetNumbers()配列を返します。

編集

関数は次のgetNumbers()とおりです。同じ戻り値の型のプロパティを返すだけです。

ここに画像の説明を入力

4

1 に答える 1

3

通常、このアサーションは、範囲の開始と終了として指定された反復子が異なるコレクションを参照することを意味します。

関数はgetNumbers()配列を返します。

getNumbers()参照によって配列を返し、同じ配列への参照も返さない限り、この初期化は無効です。

std::vector<unsigned int> ticketNumbers(getNumbers().begin(), getNumbers().end());

上記が機能するためにはgetNumbers()、同じ配列への参照を繰り返し返す必要があります。配列getNumbersを値で返すため、コピーを返します。

この行を修正するには、まず を呼び出し、結果を次のようgetNumbers()に一時変数に格納しますtempNumbers

std::array<unsigned int, TICKET_BALL_COUNT> tempNumbers= getNumbers();
std::vector<unsigned int> ticketNumbers(tempNumbers.begin(), tempNumbers.end());

または、次のように参照getNumbers()を返すように関数を変更することもできます。const

const std::array<unsigned int, TICKET_BALL_COUNT>& Ticket::getNumbers() const {
    return _numbers;
}
于 2014-01-10T19:55:42.903 に答える