30/09/2018, 23:46

Ép kiểu của đối tượng sử dụng constructor trong c++

mình thư ép kiểu đối tượng của class này qua class khác bằng constructor, chương trình build được, chạy được k lỗi, kêt quả đúng, nhưng trên màn hình lại báo lỗi
mình sử dụng hàm bạn

#include <iostream>
using namespace std;

class hcn;

class point{
private:
	int x, y;
public:
	point(int x, int y) : x(x), y(y){

	}

	point(const hcn &);

	void xuat(){
		cout << "DIEM " << x << ' ' << y << endl;
	}
};

class hcn{
private:
	int phai, trai, tren, duoi;
public:
	hcn(int phai = 0, int trai = 0, int tren = 0, int duoi = 0){
		this->duoi = duoi;
		this->phai = phai;
		this->trai = trai;
		this->tren = tren;
	}
	void xuat(){
		cout << "HCN: " << phai << ' ' << trai << ' ' << tren << ' ' << duoi << endl;
	}
	friend point::point(const hcn &);
};

point::point(const hcn &b){
	this->x = b.phai;
	this->y = b.tren;
}

int main(){
	hcn a(3, 3, 6, 6);
	point b(a);
	a.xuat();
	b.xuat();

	system("pause");
	return 0;
}

lỗi như thế này

abcxyz viết 01:55 ngày 01/10/2018

lý do là mình để const,
point( const hcn &);
vì k muốn sao chép đối tượng khi truyền tham trị, tránh tốn bộ nhớ
mình gửi luôn địa chỉ của nó vào , nhưng để tránh bị thay đổi giá trị,mình sử dụng const
nhưng sao dùng const thì lại xuât hiện lỗi trên? bỏ const thì k bị

abcxyz viết 01:48 ngày 01/10/2018

@tntxtnt heo mi!

viết 01:58 ngày 01/10/2018

cái này là do Intellisense nó ko phát hiện được point::point(const hcn&) là friend của class hcn.

thêm mấy cái hàm getter cho trái trên phải dưới là được, khỏi cần xài friend =)

xài friend phải khai báo class hcn; trước point, rồi hcn phải khai báo friend cho ctor của point, mất công lắm. Viết đại cái phương thức point hcn::convertToPoint()const cho khỏe. Mà có ai chuyển hcn thành 1 điểm bao giờ, chắc để vọc thôi hả =)

abcxyz viết 02:02 ngày 01/10/2018

mình chỉ lấy ví dụ để test thử mấy cái nạp chồng toán tử, ép kiểu các thử thôi

Bài liên quan
0