0

私はそのようなベクトルを持っています

vector<User*> users;

私はそれが良いプログラミングスタイルではないことを知っています...

今私は機能を持っています

vector<User> getAllUser(void)
{
}

私が試したのは

vector<User> getAllUser(void)
{
    vector<User> result;
    for (vector<User*>::iterator it = users.begin(); it != users.end(); it++)
    {
        result.push_back(**it);
    }
    return result;
}

しかし、それはうまくいきませんでした。

誰かが私を助けてくれませんか?どうもありがとうございます。私はSTLの初心者です

4

2 に答える 2

3

コードは機能するはずですが、タイプミスがあります。

result.push_bach(**it);

push_bachはの宣言された関数ではないstd::vectorので、エラーが発生するのはそこにあると思います。まともなコンパイラを入手することをお勧めします。これにより、stackoverflowを経由せずに、このエラーをすぐに指摘できます。

修正するには、push_back代わりに適切なメソッド名を使用します。

result.push_back(**it);
于 2012-07-30T16:13:50.833 に答える
1

ポインタを使用する必要がある場合は、使用するstd::shared_ptr<User>場所でniceを使用User*し、ヒープとスタックに割り当てられたオブジェクトを混在させたり一致させたりしないでください。

どこでもポインタを使用する必要が本当にない場合Userは、コピーコンストラクタがdefind(例User::User(const User& rhs) { /* ... */ })があることを確認してください。

于 2012-07-30T16:22:49.560 に答える