c++ - 类的非成员接口引发的编译错误?
天蓬老师
天蓬老师 2017-04-17 13:59:56
0
1
317

//在C++ Primer中文版230页Sales_data类中,有个问题不太明白。当接口函数只有 combine的时候,编译成功,一旦加入 read 和 print两个非成员接口函数,则编译报错,请指教

ifndef SALES_DATA_H_INCLUDED

define SALES_DATA_H_INCLUDED

include <iostream>

include<string>

struct Sales_data{

std::string isbn()const {return bookNo;}
Sales_data& combine(const Sales_data &rhs);
std::string bookNo;
unsigned uints_sold =0;
double revenue = 0.0;

};
Sales_data& Sales_data::combine(const Sales_data &rhs)

{
uints_sold += rhs.uints_sold;
revenue += rhs.revenue;
return *this;

}
std::istream &read (istream &is , Sales_data &item)
{

double price = 0;
is >> item.bookNo >> item.uints_sold >> price;
item.revenue = price * item.uints_sold ;
return is;

}
std::ostream &print(ostream &os, const Sales_data &item)
{

os << item.isbn() << " " << item.uints_sold << " " << item.revenue << " ";
return os;

}

endif // SALES_DATA_H_INCLUDED

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回覆(1)
左手右手慢动作

請在 #include <string>後面加上一句using namespace std;

貼程式碼的時候不要直接貼,使用新增程式碼的功能。

#ifndef SALES_DATA_H_INCLUDED
#define SALES_DATA_H_INCLUDED
#include <iostream>
#include <string>

using namespace std;

struct Sales_data {
    std::string isbn() const
    {
        return(bookNo);
    }
    Sales_data & combine( const Sales_data &rhs );
    std::string    bookNo;
    unsigned    uints_sold    = 0;
    double        revenue        = 0.0;
};
Sales_data & Sales_data::combine( const Sales_data &rhs )
{
    uints_sold    += rhs.uints_sold;
    revenue        += rhs.revenue;
    return(*this);
}

std::istream &read(istream &is, Sales_data &item )
{
    double price = 0;
    is >> item.bookNo >> item.uints_sold >> price;
    item.revenue = price * item.uints_sold;
    return(is);
}

std::ostream &print( ostream &os, const Sales_data &item )
{
    os << item.isbn() << " " << item.uints_sold << " " << item.revenue << " ";
    return(os);
}

#endif /* SALES_DATA_H_INCLUDED */
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!