30/09/2018, 16:24
Cách xây dựng toán tử nhập cin >> trong C++
Em có xây dựng một class soPhuc như bên dưới, Em đã làm được hàm nhap
và hàm hienThi
.
Bây giờ em muốn thực hiện hai hàm này bằng toán tử operator >>
và operator <<
.
Code em thực hiện như sau:
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
class soPhuc
{
public :
float phanThuc, phanAo, modun;
void nhap()
{
cout <<" nhap phan thuc : " ;
cin >> phanThuc;
cout <<" nhap phan ao la: ";
cin >> phanAo;
soPhuc();
modun = phanThuc*phanThuc + phanAo*phanAo;
}
void hienThi()
{
cout << phanThuc;
if (phanAo > 0 ) cout << " + " << phanAo <<"i";
if (phanAo < 0 ) cout << " - " << -phanAo <<"i";
cout << endl;
cout <<"modun la: " << modun;
}
soPhuc operator +(soPhuc A)
{
soPhuc kq;
kq.phanThuc = phanThuc + A.phanThuc;
kq.phanAo = phanAo + A.phanAo;
return kq;
}
soPhuc operator *(soPhuc A)
{
soPhuc kq;
kq.phanThuc = phanThuc*A.phanThuc - phanAo*A.phanAo;
kq.phanAo = phanAo*A.phanThuc + phanThuc*A.phanAo;
return kq;
}
soPhuc operator -(soPhuc A)
{
soPhuc kq;
kq.phanThuc = phanThuc - A.phanThuc;
kq.phanAo = phanAo - A.phanAo;
return kq;
}
soPhuc operator / (soPhuc A)
{
soPhuc kq;
kq.phanThuc = (phanThuc*A.phanThuc + phanAo*A.phanAo)/(A.phanThuc*A.phanThuc + A.phanAo*A.phanAo);
kq.phanAo = (phanAo*A.phanThuc - phanThuc*A.phanAo)/(A.phanThuc*A.phanThuc + A.phanAo*A.phanAo);
return kq;
}
};
int main(int argc, char *argv[])
{
soPhuc A,B,C;
cout <<"nhap so phuc A
";
A.nhap();
cout <<"nhap so phuc B
";
B.nhap();
A.hienThi();
B.hienThi();
getch();
return 0;
}
Khi em viết toán tử như dưới thì bị lỗi như hình ạ
ostream& operator <<(ostream& s, const soPhuc &v)
{
s << phanThuc;
if (phanAo > 0 ) s << " + " << phanAo <<"i";
if (phanAo < 0 ) s << " - " << -phanAo <<"i";
s << endl;
s <<"modun la: " << modun;
}
Đây là hình bị lỗi.
https://app.box.com/representation/file_version_23082470181/image_2048/1.png?shared_name=9n39ddmb7rf3evvhycld
Xin cảm ơn các anh chị!
Bài liên quan
Bạn nên khai báo hàm overload operator << trong class như sau:
và sửa lại nội dung trong function này như sau (đặt nó bên ngoài class):
Bạn truyền tham số vào function overload là đối tượng v, nhưng bạn lại sử dụng field phanAo của chính nó, ko phải của đối tượng v.
Em cám ơn ạ cuối cùng thì em cũng biết thêm về cái hàm bạn cám ơn anh nhiều ạ!