【发布时间】:2018-05-01 19:38:29
【问题描述】:
我正在尝试将我的指针向量取出到控制台窗口,但仍然无法正常工作。我可以填充向量,但是当我尝试 cout
这是带有私有类成员和函数声明的头文件:
#pragma once
#include"CDealer.h"
#include<vector>
#include<fstream>
#include<iterator>
class CShop
{
public:
CShop();
~CShop();
CShop(const string &fname);
friend ostream &operator << (ostream &toStream, const CShop &S);
friend istream &operator >> (istream &fromStream, CShop &S);
private:
string m_strNameShop;
string m_strCity;
vector<CDealer*> Dealers;
};
这是我的构造函数,其中包含我带来数据的文件
#include "CShop.h"
CShop::CShop(){}
CShop::~CShop(){}
CShop::CShop(const string &fname)
{
fstream File(fname, ios::in);
if (File.is_open())
{
CDealer c;
File >> m_strNameShop;
File >> m_strCity;
while (File.is_open())
{
File >> c;
Dealers.push_back(new CDealer(c));
}
File.close();
}
else
throw "ERROR! ";
}
这是重载运算符
ostream &operator << (ostream &toStream, const CShop &S)
{
return 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++;
}
}
所以最后我的主
#include"CShop.h"
#include<iostream>
#include<string>
#include <stdlib.h>
#include<vector>
using namespace std;
int main()
{
CShop SS1("data.txt");
cout << SS1;
system("pause");
return 0;
请帮帮我:)
【问题讨论】:
-
你试过调试器吗?
-
当我复制并粘贴这段代码时,它不会编译。似乎缺少
#include和其他部分。如果这些部分不相关,请将它们从应该重现问题的代码中删除。确保您在编译器中启用了所有警告。 -
当我在 Dealers.push_back(new CDealer(c)) 上设置断点时;我可以看到向量已填充,但最后在控制台上我只能看到 m_strNameShop 和 m_strCity,当我在 while (it != S.Dealers.end()) { toStream