0 views
Skip to first unread message

I don't know I don't know

unread,
Aug 12, 2010, 10:50:08 AM8/12/10
to Học hè
Thầy và các bạn giúp em câu này với:
class A
{
    private:
    public:
    friend istream&operator>>(istream&,A&);//Hàm 1
    friend ostream&operator<<(ostream&,A);//Hàm 2
};
class B: public A
{
   private:
   public:
   friend istream&operator>>(istream&,B&);//Hàm 3
   friens ostrean&operator<<(ostream&,B);//Hàm 4
};
Trong hàm 3 muốn gọi hàm 1 / Trong hàm 4 muốn gọi hàm 2 cách làm làm sao vậy hay do định nghĩa friend nên không gọi được vậy?
Cám ơn mọi người!
--
npe...@gmail.com

I don't know I don't know

unread,
Aug 13, 2010, 8:14:25 AM8/13/10
to Học hè
Em về nhà thử gọi như thầy bảo nhưng đâu có được!
#include<iostream.h>
#define MAX 50
class NGUOI;
class SINHVIEN;
class NGUOI
{
    private:
        char*Ho_ten;
    public:
        friend istream&operator>>(istream&,NGUOI&);//Ham 1
        friend ostream&operator<<(ostream&,NGUOI);//Ham 2
};
class SINHVIEN:public NGUOI
{
    private:
        char*MSSV;
    public:
        friend istream&operator>>(istream&,SINHVIEN&);//Ham 3 goi ham 1?
        friend ostream&operator<<(ostream&,SINHVIEN);//Ham 4 goi ham 2?
};
istream&operator>>(istream&is,NGUOI&N)
{cout<<"Nhap ho ten: ";cin.getline(N.Ho_ten,MAX);return is;}
ostream&operator<<(ostream&os,NGUOI N)
{cout<<"Ho ten: "<<N.Ho_ten<<endl;return os;}
istream&operator>>(istream&is,SINHVIEN&SV)
{/*is>>SV.NGUOI();*/cout<<"Nhap MSSV: ";cin.getline(SV.MSSV,MAX);return is;}
ostream&operator<<(ostream&os,SINHVIEN SV)
{/*os<<SV.NGUOI();*/cout<<"MASV: "<<SV.MSSV<<endl;return os;}
int main()
{
    SINHVIEN SV;
    cin>>SV;cout<<SV;   
    system("PAUSE");
}
--
npe...@gmail.com

Pro khanh

unread,
Aug 15, 2010, 3:17:52 AM8/15/10
to OOP
Thầy cho em hỏi.
class A
{...};
class B
{...};
Có thể nào khai báo lớp B vừa là kế thừa từ lớp A vừa là lớp bạn của A, được ko thầy?
Thanks Thầy

Toan Nguyen Van

unread,
Aug 15, 2010, 12:47:31 PM8/15/10
to oop-he2010
Xin chào em!
Mục đích của vấn về vừa thừa kế vừa là bạn để làm gì em?


2010/8/15 Pro khanh <khanh...@yahoo.com.vn>

Pro khanh

unread,
Aug 15, 2010, 9:20:19 PM8/15/10
to oop-h...@googlegroups.com
Em chào thầy, mục đích của em là như thế này.
Vi Du trong trường hợp này.
class PhanSo()
{Ham1;
 Ham2;
};
class SoNguyen(): public PhanSo
{Ham3;
 Ham4;
};
int main()
{PhanSo a, b;
 SoNguyen x, y;
}
Các hàm ở SoNguyen có thể gọi hàm ở Phân Số được(VD: x= a+b). Nhưng ngược lại thì ko được, phải ko thầy?(VD: a= x+y).
Ý em là muốn Hàm 1 gọi Hàm 3 và 4. 
 
-----------------------------------------------------------

Toan Nguyen Van

unread,
Aug 16, 2010, 9:11:34 AM8/16/10
to oop-he2010
Chào em!
Như thế muốn gọi Hàm3 em phải khai báo biến x thuộc lớp SoNguyen trong Ham1 của lớp PhanSo.
Nhưng trong Hàm1 của lớp PhanSo em chưa có lớp SoNguyen.
:-))



2010/8/16 Pro khanh <khanh...@yahoo.com.vn>

Pro khanh

unread,
Aug 16, 2010, 11:56:19 AM8/16/10
to oop-h...@googlegroups.com
Vậy có nghĩa là em sẽ khai báo lớp SoNguyen la lớp bạn của lớp PhanSo. (đồng thời lớp SoNguyen cũng là lớp kế thừa từ PhanSo)
Em thanks thầy.
(^^)


Từ: Toan Nguyen Van <nguyen...@gmail.com>
Đến: oop-he2010 <oop-h...@googlegroups.com>
Gửi ngày: 20:11:34, Thứ Hai, 16 tháng 8 2010
Chủ đề: Re: Về:

Toan Nguyen Van

unread,
Aug 16, 2010, 2:45:08 PM8/16/10
to oop-he2010
Em thử khai báo thử có được ko? Có sự đệ qui nào ko?


2010/8/16 Pro khanh <khanh...@yahoo.com.vn>
Reply all
Reply to author
Forward
0 new messages