C++ Print()函数无法输出向量,有什么问题吗?

C++ Print()函数无法输出向量,有什么问题吗?,c++,function,vector,C++,Function,Vector,所以我的工作就是描述我们老师给我们的电话簿作业原型的功能。他还给了我们一个内置的main(),我们不能更改他的main()或原型,只能描述它们。我正在处理void print()函数,它靠近底部。cout括号 因为成员变量name和phone已设置为private(不能在类本身之外访问它们)。幸运的是,Person类中已经有一个函数可以为您打印它: void Person::print() const { cout << endl << name <<

所以我的工作就是描述我们老师给我们的电话簿作业原型的功能。他还给了我们一个内置的
main()
,我们不能更改他的
main()
或原型,只能描述它们。我正在处理
void print()
函数,它靠近底部。
cout
括号

因为成员变量
name
phone
已设置为
private
(不能在类本身之外访问它们)。幸运的是,Person类中已经有一个函数可以为您打印它:

void Person::print() const
{
    cout << endl << name << " " << phone;
}
同样的原则适用于

改进建议

不要假设
cout
cin
在课堂上的任何地方。在类实现中使用其中一个函数时,将函数更改为使用
std::ostream&
std::istream&
作为输入参数。然后,您可以选择在调用函数时使用任何
std::ostream
std::istream
。您可以决定从文件中读取数据,或将数据写入文件。在
main
中做出该决定,并使类不受该决定的影响

例如,将
Person::print()
更改为:

void print(std::ostream& out) const;
void print(vector<Person> &phone_book, std::ostream& out)
{
    for(int i=0; i < phone_book.size(); i++)
    {
        phone_book[i].print(out);
        out << " ";
    }
}
以及实施:

void Person::print(std::ostream& out) const
{
    out << endl << name << " " << phone;
}

个人
不需要。因此,您要么必须重载它,要么必须分别
cout
类的成员(基本上是一样的,但是重载了
太好了第一个方法起作用了,我忘了我有一个用于打印的类函数!!!如果可以的话,我会更改参数,但他严格指定要维护他使用的参数。)provided@BroBama不幸的是,一些教师没有注意到这些细节。
cout << phone_book[i].name << " - " << phone_book[i].phone << endl;
void Person::print() const
{
    cout << endl << name << " " << phone;
}
for(int i=0; i < phone_book.size(); i++)
    phone_book[i].print();
class myVar
{
    public:
        int value;

    myVar operator+(myVar varToSubtract)
    {
        return value - varToSubtract;
    }
};
cout << phone_book[i] << " ";
void print(vector<Person> &phone_book)
{
    for(int i=0; i < phone_book.size(); i++)
    {
        phone_book[i].print();
        cout << " ";
    }
}
void print(std::ostream& out) const;
void Person::print(std::ostream& out) const
{
    out << endl << name << " " << phone;
}
void print(vector<Person> &phone_book, std::ostream& out)
{
    for(int i=0; i < phone_book.size(); i++)
    {
        phone_book[i].print(out);
        out << " ";
    }
}