0

VC++でプログラムを書いています。ここでは、クラス Product と Client.In クライアントを宣言しています。関数リスト initProduct() を list::iterator i; で使用しています。イテレータを使用してリストを表示できません。この私のコード:

#include "StdAfx.h"
#include <iostream>
#include <string>
#include <list>
#include <iterator>
using namespace std;
class Product
{
    int item_code;
    string name;
    float price;
    int count;
        public:
    void get_detail()
    {
        cout<<"Enter the details(code,name,price,count)\n"<<endl;
        cin>>item_code>>name>>price>>count;
    }

};

class Client
{
public:

    list<Product> initProduct()
    {
        char ans='y';
        list<Product>l;
        list<Product>::iterator i;
        while(ans=='y')
        {
            Product *p = new Product();
            p->get_detail();
            l.push_back(*p);
            cout<<"wanna continue(y/n)"<<endl;
            cin>>ans;
        }
        cout<<"*******"<<endl;

        for(i=l.begin(); i!=l.end(); i++)
             cout << *i << ' ';    //ERROR no operator << match these operand
        return l;
    }
};
int main()
{
    Client c;
    c.initProduct();
    system("PAUSE");
}
4

3 に答える 3

2

ostream& operator<<(ostream& os, const Product& product)表示したい情報を出力する を作成する必要があります。

于 2013-07-03T10:33:54.500 に答える
0

使用している場合は、C++11次を使用できますauto

for(auto it : Product)
    {
        cout << it.toString();
    }

ただし、これを実装する必要があります。これにより、toString()必要なすべての情報が表示されます

于 2013-07-03T10:36:05.283 に答える