01/10/2018, 15:35
Lỗi đoạn nạp chồng nhập xuất
mình có làm bài tập như sau, nhưng không biết sai chỗ nào.Nhờ các bạn chỉ giúp.
Thấy toàn báo lỗi phần Date::>>() trong lớp PN.
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
class Date
{
public:
int Ngay, Thang, Nam;
static int dem;
friend istream &operator>>( istream &input, Date &D )
{ cout<<"nhap ngay thang nam: ";
input >> D.Ngay >> D.Thang>>D.Nam;
return input;
}
friend ostream &operator<<( ostream &output, Date D )
{
output << D.Ngay <<"/"<<D.Thang<<"/"<<D.Nam;
return output;
}
};
class PN:public Date
{
public:
string Ten, NgayNhap;
int Sl;
friend istream &operator>>( istream &input, PN &P )
{
Date::>>();
cin.ignore();
cout<<"Ten Mat Hang: ";getline(input, Ten);
cout<<"Ngay Nhap: ";getline(input, NgayNhap);
cout<<"So luong: ";input>>Sl;
return input;
}
friend ostream &operator<<( ostream &output, PN P )
{
Date::<<();
output<<setw(20)<<Ten<<setw(20)<<NgayNhap<<setw(10)<<Sl<<endl;
return output;
}
};
int Date::dem=1;
int main()
{
PN P[20];
int n;
cout<<"
1.nhap so luong: ";cin>>n;
for(int i=1; i<=n; i++)
cin>>P[i];
cout<<"==>DS vua nhap la:"<<endl;
cout<<setw(10)<<"STT"<<setw(18)<<"Thoi gian"<<setw(20)<<"Ten"<<setw(20)<<"Ngay Nhap"<<setw(10)<<"Sl"<<endl;
for(int i=1; i<=n; i++)
cout<<P[i];
int dem=0;
cout<<"
==>DS phieu hang co Sl>100 la:"<<endl;
for(int i=1; i<=n; i++)
{
if (P[i].getSl()>100)
{
cout<<P[i];
dem++;
}
}
if (dem==0) cout<<" khong co don hang nao";
return 1;
}
Bài liên quan
Sai cú pháp rồi bạn viết đơn giản thôi:
input >> static_cast<Date> (P);
Hàm hai tham số mà bạn không đưa tham số nào thì
Bạn có sửa cụ thể vào trong code cho mình được không vì mình mới học và vẫn chưa hình dung được nên sửa như thế nào. Cảm ơn bạn.
input >> D.Ngay >> D.Thang>>D.Nam;
chuyển thành:input >> static_cast<Date> (P);
động não tí đi chứ
Mà cũng không ổn
PN
vớiDate
phải là composition chứ,Date
chỉ là một phần củaPN
chứPN
không phảiDate
.