矢量被每个覆盖 - > push_back()

时间:2015-12-08 04:01:09

标签: c++ vector stl

我试图建立一个名为" Client"它有一个指针指向矢量"文件"。当我将一个元素推送到列表时,它似乎工作正常,但是当我添加多个元素时,整个向量将被最新元素覆盖。 所以说"一个"被添加到向量中,然后向量是"一个"。 但是说你再添加"两个"然后向量,向量是"两个" ... 我可能做了一些明显不对的事,但我已经被困在这里这么久我不知道该怎么办。

这是我添加到矢量

的地方
void share( std::vector<Client*> *cliIP, int connfd, char* buf ){
    File *file = new File(buf);
    int place;
    for (int i = 0; i < cliIP->size(); i++)
        if( cliIP->at(i)->getConnfd() == connfd ){
           cliIP->at(i)->addFile(file);
           place = i;
        }

    cliIP->at(place)->printFiles();
}

这是我的构造函数:

Client::Client(const char *IP, int portNum, int connfd){
    _IPaddr = IP;
    _portNum = portNum;
    _active = 0;
    _connfd = connfd;
    _cache = 0;
    _listOfClients = new std::vector<Client*>;
    _listOfFiles = new std::vector<File*>;

}

这里是addFile:

void Client::addFile( File *file ){
    _listOfFiles->push_back(file);
}

0 个答案:

没有答案