Có một project được tổ chức như sau:
File Complex.h:
Mã:
#ifndef _CComplex_H
#define _CComplex_H
#include "Global.h"
class CComplex {
friend ostream& operator<<(ostream&, const CComplex&);
friend istream& operator>>(istream&, CComplex&);
friend int operator==(const CComplex&, const CComplex&);
friend int operator>(const CComplex&, const CComplex&);
public:
CComplex();
CComplex(const CComplex&);
CComplex(int,int);
~CComplex();
void operator=(const CComplex&);
double abs();
private:
double dThuc;
double dAo;
};
#endif
File Complex.cpp:
Mã:
#include "Complex.h"
#include "Global.h"
// Constructor functions
CComplex::CComplex() { dThuc = 0; dAo = 0; }
CComplex::CComplex(int Thuc, int Ao) : dThuc(Thuc), dAo(Ao) {}
// Copy constructor
CComplex::CComplex(const CComplex& num) : dThuc(num.dThuc), dAo(num.dAo) {}
// Destructor function
CComplex::~CComplex() {}
// Overloading Operator Functions
ostream& operator<<(ostream& ostr, const CComplex& num)
{
ostr << num.dThuc << " + " << num.dAo << "i";
return ostr;
}
istream& operator>>(istream& istr, CComplex& num)
{
istr >> num.dThuc >> num.dAo;
return istr;
}
void CComplex::operator=(const CComplex& num)
{
dThuc = num.dThuc;
dAo = num.dAo;
}
int operator==(const CComplex& num1, const CComplex& num2)
{
return (num1.abs() == num2.abs());
}
int operator>(const CComplex& num1, const CComplex& num2)
{
return (num1.abs() > num2.abs());
}
// Absolute function
double CComplex::abs()
{
return sqrt(dThuc*dThuc + dAo*dAo);
}
File Global.h:
Mã:
#include <iostream.h>
#include <conio.h>
#include <math.h>
File main.cpp:
Mã:
#include "Global.h"
#include "Complex.h"
int main()
{
CComplex num1;
CComplex num2;
CComplex num3(4,5);
cout << num1 << endl;
cin >> num1;
cout << num1 << endl;
num2 = num1;
cout << num2 << endl;
if (num1 == num3)
cout << "Bang nhau!" << endl;
else cout << "Khong bang!" << endl;
double Abs = num3.abs();
cout << Abs << endl;
_getch();
return 0;
}
Khi biên dịch, nó báo lỗi nư sau:
Mã:
Compiling...
Complex.cpp
g:\thuchanh\c++\oop_\chapter03_\complex.cpp(35) : error C2662: 'abs' : cannot convert 'this' pointer from 'const class CComplex' to 'class CComplex &'
Conversion loses qualifiers
g:\thuchanh\c++\oop_\chapter03_\complex.cpp(35) : error C2662: 'abs' : cannot convert 'this' pointer from 'const class CComplex' to 'class CComplex &'
Conversion loses qualifiers
g:\thuchanh\c++\oop_\chapter03_\complex.cpp(40) : error C2662: 'abs' : cannot convert 'this' pointer from 'const class CComplex' to 'class CComplex &'
Conversion loses qualifiers
g:\thuchanh\c++\oop_\chapter03_\complex.cpp(40) : error C2662: 'abs' : cannot convert 'this' pointer from 'const class CComplex' to 'class CComplex &'
Conversion loses qualifiers
Error executing cl.exe.
Chapter03_.exe - 4 error(s), 0 warning(s)
Mấy huynh giải thích dùm chỗ sai dùm em tí nghen, với lại cách sửa nữa. Cảm ơn nhiều ^^.
Em dùng visual C++ 6.0.
View more random threads:
Thông qua phân tích dữ liệu Google từ 86 quốc gia, mới đây, một công ty tại Anh đã công bố bảng xếp hạng kích tấc "cậu nhỏ" của các nước trên thế giới. Kết quả, hầu hết các nước xếp ở nhóm đầu của...
"Chim" của chàng trai Việt thuộc...