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具有复制构造函数定义(例如,User::User(const User& rhs) { /* ... */ }

于 2012-07-30T16:22:49.560 回答