所以现在我有以下内容:

        boost::ptr_vector <Customer> cvect;

         ifstream cDbase("datafiles/customers.txt");

        while (cDbase.good())
        {
            while (!cDbase.eof())
            {
                cDbase >> newCust;

                Customer* c = &newCust;
                cvect.push_back(c);

            }
        }


        for (unsigned int loop = 0; loop < cvect.size(); loop++)
            {
                cout << cvect[loop];
            }


当我尝试打印客户详细信息时,它会打印出空白行。如何正确取消对ptr_vector的引用?

最佳答案

Boost指针容器用于拥有动态分配对象的容器。因此,要按预期使用它,您可以这样做:

while (cDbase >> newCust) {
  cvect.push_back(new Customer(newCust));
}


(注意:never loop on eof())。

但是,您真的需要动态存储它们吗?简单地说:

std::vector<Customer> cvect;

ifstream cDbase("datafiles/customers.txt");

while (cDbase >> newCust) {
  cvect.push_back(newCust);
}

关于c++ - 取消引用boost::ptr_vector,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19512873/

10-09 05:10