C++ C++;,指针的容器向量,重载运算符<&书信电报;

C++ C++;,指针的容器向量,重载运算符<&书信电报;,c++,vector,stl,C++,Vector,Stl,我试图将指针向量带到控制台窗口,但仍然不起作用。我可以填充向量,但当我尝试cout时,函数中出现过早的返回 return toStream << "Name Shop: " << S.m_strNameShop << " City: " << S.m_strCity; //^^^ std::ostream& operator<<(std::ostream& toStream, const CShop &S)

我试图将指针向量带到控制台窗口,但仍然不起作用。我可以填充向量,但当我尝试cout时,函数中出现过早的
返回

 return toStream << "Name Shop: " << S.m_strNameShop << " City: " << S.m_strCity;
 //^^^
std::ostream& operator<<(std::ostream& toStream, const CShop &S)
{
   toStream << "Name Shop: " << S.m_strNameShop << " City: " << S.m_strCity;

   vector<CDealer *>::const_iterator it = S.Dealers.begin();
   while (it != S.Dealers.end())
   {
      toStream << "Dealer " << *it++;
   }

   return toStream;
}

进一步改进的建议

线路

      toStream << "Dealer " << *it++;
将其更改为:

      Dealer* dealerPtr = *it++;
      toStream << "Dealer " << *dealerPtr;
 while (File >> c)
 {
    Dealers.push_back(new CDealer(c));
 }

你试过调试器吗?当我复制并粘贴这段代码时,它不会编译。似乎缺少
#包括和其他部分。如果这些部分不相关,请将它们从应该重现问题的代码中删除。确保在编译器中启用了所有警告。当我将断点放在交易商上时。向后推(新CDealer(c));我可以看到向量已填充,但在控制台的最后,当我在while(it!=S.derals.end())上放置断点时,我只能看到m_streamshop和m_strCity{toStream@Kristiyan,不客气。很高兴我能提供帮助。
toStream << "Name Shop: " << S.m_strNameShop << " City: " << S.m_strCity;
std::ostream& operator<<(std::ostream& toStream, const CShop &S)
{
   toStream << "Name Shop: " << S.m_strNameShop << " City: " << S.m_strCity;

   vector<CDealer *>::const_iterator it = S.Dealers.begin();
   while (it != S.Dealers.end())
   {
      toStream << "Dealer " << *it++;
   }

   return toStream;
}
      toStream << "Dealer " << *it++;
      Dealer* dealerPtr = *it++;
      toStream << "Dealer " << *dealerPtr;
 while (File.is_open())
 {
    File >> c;
    Dealers.push_back(new CDealer(c));
 }
 while (File >> c)
 {
    Dealers.push_back(new CDealer(c));
 }