代码
#include <iostream>
#include<iomanip>
using namespace std;
class Product
{
static float discount;
static float sum;
static int n;
int num,q;
float pri;
public:
Product(int a=0,int b=0,float c=0):num(a),q(b),pri(c) {}
Product(Product&p)
{
num=p.num;
q=p.q;
pri=p.pri;
}
void total()
{
double r=1;
if(q>=10)r=0.98;
sum+=pri*q*(1-discount)*r;
n+=q;
}
static float average();
static void display();
};
float Product::discount=0.05;
float Product::sum=0;
int Product::n=0;
float Product::average()
{
if(n!=0)
return sum/n;
}
void Product::display()
{
cout<<sum<<endl<<average()<<endl;
}
int main()
{
const int NUM =10;
Product Prod[10];
int m,i;
cin>>m;
int num;
int quantity;
float price;
for(i=0; i<m; i++)
{
cin>>num>>quantity>>price;
Product temp(num,quantity,price);
Prod[i]=temp;
}
for(i=0; i<m; i++)
Prod[i].total();
cout<<setiosflags(ios::fixed);
cout<<setprecision(2);
Product::display();
return 0;
}
总结:
我原来不是把average () display() 用成的静态函数,错了error: cannot call member function 'void Product::display()' without object
后又只把display()用的静态,average () 是一般成员函数,错了;error: cannot call member function 'float Product::average()' without object;