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
Bài liên quan
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ị
@tntxtnt heo mi!
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ướcpoint
, rồihcn
phải khai báo friend cho ctor củapoint
, mất công lắm. Viết đại cái phương thứcpoint 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ả =)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