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.