C++ C++;,指针的容器向量,重载运算符<&书信电报;
我试图将指针向量带到控制台窗口,但仍然不起作用。我可以填充向量,但当我尝试cout时,函数中出现过早的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)
返回
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));
}