本帖最后由 freebody111 于 2011-03-02 21:18:13 编辑

解决方案 »

  1.   

    我用VC++6.0编译就报错啊
    C:\Program Files\Microsoft Visual Studio\MyProjects\11111\11.cpp(16) : error C2143: syntax error : missing ';' before '<'
    C:\Program Files\Microsoft Visual Studio\MyProjects\11111\11.cpp(16) : error C2059: syntax error : '<'
    C:\Program Files\Microsoft Visual Studio\MyProjects\11111\11.cpp(16) : error C2238: unexpected token(s) preceding ';'
    C:\Program Files\Microsoft Visual Studio\MyProjects\11111\11.cpp(97) : error C2143: syntax error : missing ';' before '<'
    C:\Program Files\Microsoft Visual Studio\MyProjects\11111\11.cpp(97) : error C2350: 'Goods::operater' is not a static member
    C:\Program Files\Microsoft Visual Studio\MyProjects\11111\11.cpp(97) : error C2143: syntax error : missing ';' before '<'
    C:\Program Files\Microsoft Visual Studio\MyProjects\11111\11.cpp(98) : error C2143: syntax error : missing ';' before '{'
    C:\Program Files\Microsoft Visual Studio\MyProjects\11111\11.cpp(98) : error C2447: missing function header (old-style formal list?)
      

  2.   

    就是 bool operater<(const Goods &s)const; 这行
      

  3.   

    答案就是你的operator拼错了,拼成了operater
    我在vc6下能明显的看到他没有变成蓝色,仔细一看,是你拼错了
      

  4.   

    #include<iostream>
    #include<string>
    #include<map>
    #include <stdio.h>
    #include <stdlib.h>
    using namespace std;class Goods
    {
    public:
    Goods(int number,string name,string tpye,double mprice);
    void Show();
    void Set(int number);
    void Set(int number,string s_temp);
    void Set(double mprice);
    int ReadNumber();
    string ReadString(int number);
    double ReadPrice();
    bool operator < (const Goods& s) const; int m_number;
    string m_name;
    string m_tpye;
    double m_price;
    };class Item
    {
    public:
    Goods m_goods;
    int m_count;
    };class Cart
    {
    private:
    map<Goods,int> map_goods;
    public:
    void Add(Goods goods,int number = 1);
    void Remove(Goods goods,int number = 1);
    double price();
    void Details();
    };Goods::Goods(int number,string name,string tpye,double mprice)
    {
    m_number = number;
    m_name = name;
    m_tpye = tpye;
    m_price = mprice;
    }
    void Goods::Show()
    {
    cout<<"商品编号 "<<"商品名称 "<<"商品种类 "<<"商品单价"<<endl;
    cout<<m_number<<" "<<m_name<<" "<<m_tpye<<" "<<m_price<<endl;
    }void Goods::Set(int number)
    {
    m_number = number;
    }void Goods::Set(int number,string s_temp)
    {
    if(number == 1)
    m_name = s_temp;
    else if(number == 2)
    m_tpye = s_temp;
    else
    cout<<"没有这种属性"<<endl;
    }void Goods::Set(double mprice)
    {
    m_price = mprice;
    }
    int Goods::ReadNumber()
    {
    return m_number;
    }string Goods::ReadString(int number)
    {
    if(number == 1)
    return m_name;
    else if(number == 2)
    return m_tpye;
    else
    {
    cout<<"没有这种属性"<<endl;
    return 0;
    }
    }double Goods::ReadPrice()
    {
    return m_price;
    }bool Goods::operator < (const Goods& s) const
     {
     if(m_number < s.m_number)
     return true;
     else if(m_number == s.m_number)
     return true;
     }void Cart::Add(Goods goods,int number)
    {
    map_goods.insert(pair<Goods,int>(goods,number));
    }
    void Cart::Remove(Goods goods,int number)
    {
     map<Goods,int>::iterator i = map_goods.find(goods);
     if(i != map_goods.end())
     {
     i->second -= number;
     if(i->second <=0 )
     map_goods.erase(i);
     }
    }
    double Cart::price()
    {
    double r = 0;
    for(map<Goods,int>::iterator i=map_goods.begin();i!= map_goods.end(); ++i)
    r += i->first.m_price;
    return r;
    }
    void Cart::Details()
    {
     for(map<Goods,int>::iterator i=map_goods.begin();i!= map_goods.end(); ++i)
     {
     cout << "商品编码" << i->first.m_number <<endl;
     cout << "商品名称" << i->first.m_name <<endl;
     cout << "商品种类" << i->first.m_tpye <<endl;
     cout << "商品单价" << i->first.m_price <<endl;
     }
    }
    int main()
    {
      Cart cart;
      Goods goods1(1,"木马","玩具",49.5);
      Goods goods2(2,"饼干","食品",6.3);
      Goods goods3(3,"洗发水","日用品",19.6);
      cart.Add(goods1);
      cart.Add(goods2,2);//同时添加了两件
      cart.Add(goods3,4);
      cart.Details();
      cout<<"**********"<<endl;
      cart.Add(goods2);
      cart.Details();
      cout<<"**********"<<endl;
      cart.Add(goods2,2);
      cart.Details();
      cout<<"**********"<<endl;
      cart.Remove(goods2);//移除一件;
      cart.Details();
      cout<<"**********"<<endl;
      cart.Remove(goods2,5);
      cart.Details();
      return 0;
    }
      

  5.   

    #include<iostream>
    #include<string>
    #include<map>
    using namespace std;class Goods
    {
    public:
    Goods(int number,string name,string tpye,double mprice);
    void Show();
    void Set(int number);
    void Set(int number,string s_temp);
    void Set(double mprice);
    int ReadNumber();
    string ReadString(int number);
    double ReadPrice();
    bool operator < (const Goods& s) const; int m_number;
    string m_name;
    string m_tpye;
    double m_price;
    };class Item
    {
    public:
    Goods m_goods;
    int m_count;
    };class Cart
    {
    private:
    map<Goods,int> map_goods;
    public:
    void Add(Goods goods,int number = 1);
    void Remove(Goods goods,int number = 1);
    double price();
    void Details();
    };Goods::Goods(int number,string name,string tpye,double mprice)
    {
    m_number = number;
    m_name = name;
    m_tpye = tpye;
    m_price = mprice;
    }
    void Goods::Show()
    {
    cout<<"商品编号 "<<"商品名称 "<<"商品种类 "<<"商品单价"<<endl;
    cout<<m_number<<" "<<m_name<<" "<<m_tpye<<" "<<m_price<<endl;
    }void Goods::Set(int number)
    {
    m_number = number;
    }void Goods::Set(int number,string s_temp)
    {
    if(number == 1)
    m_name = s_temp;
    else if(number == 2)
    m_tpye = s_temp;
    else
    cout<<"没有这种属性"<<endl;
    }void Goods::Set(double mprice)
    {
    m_price = mprice;
    }
    int Goods::ReadNumber()
    {
    return m_number;
    }string Goods::ReadString(int number)
    {
    if(number == 1)
    return m_name;
    else if(number == 2)
    return m_tpye;
    else
    {
    cout<<"没有这种属性"<<endl;
    return 0;
    }
    }double Goods::ReadPrice()
    {
    return m_price;
    }bool Goods::operator < (const Goods& s) const
     {
     if(m_number < s.m_number)
     return true;
     else if(m_number == s.m_number)
     return true;
     }
    void Cart::Add(Goods goods,int number)
    {
    map_goods.insert(pair<Goods,int>(goods,number));
    }
    void Cart::Remove(Goods goods,int number)
    {
     map<Goods,int>::iterator i = map_goods.find(goods);
     if(i != map_goods.end())
     {
     i->second -= number;
     if(i->second <=0 )
     map_goods.erase(i);
     }
    }
    double Cart::price()
    {
    double r = 0;
    for(map<Goods,int>::iterator i=map_goods.begin();i!= map_goods.end(); ++i)
    r += i->first.m_price;
    return r;
    }
    void Cart::Details()
    {
     for(map<Goods,int>::iterator i=map_goods.begin();i!= map_goods.end(); ++i)
     {
     cout << "商品编码" << i->first.m_number <<endl;
     cout << "商品名称" << i->first.m_name <<endl;
     cout << "商品种类" << i->first.m_tpye <<endl;
     cout << "商品单价" << i->first.m_price <<endl;
     }
    }
    int main()
    {
      Cart cart;
      Goods goods1(1,"木马","玩具",49.5);
      Goods goods2(2,"饼干","食品",6.3);
      Goods goods3(3,"洗发水","日用品",19.6);
      cart.Add(goods1);
      cart.Add(goods2,2);//同时添加了两件
      cart.Add(goods3,4);
      cart.Details();
      cout<<"**********"<<endl;
      cart.Add(goods2);
      cart.Details();
      cout<<"**********"<<endl;
      cart.Add(goods2,2);
      cart.Details();
      cout<<"**********"<<endl;
      cart.Remove(goods2);//移除一件;
      cart.Details();
      cout<<"**********"<<endl;
      cart.Remove(goods2,5);
      cart.Details();
      return 0;
    }
      

  6.   

    bool Goods::operater < (Goods const& s)const
    {
            if(m_number < s.m_number)
                return true;
            else if(m_number == s.m_number)
                return true;
            return false;//再加这句
    }
    1.差一种返回值,
    2.operater这个单词就是错的吧,应该是operator