PDA

View Full Version : [ Solved ]Hỏi về class?


khanh_0507
11-09-2008, 01:36 PM
cho mình hỏi muốn truy cập vao thành phần tọa độ trong bài nay thì phải làm như thế nào?
dùng : p.x thì báo lỗi.
mong các pro chỉ giúp

#include<stdio.h>
#include<istream.h>
#include<conio.h>

class POINT
{
int x;
int y;
public:
void set_xy(int a,int b)
{
x=a;
y=b;
}
void display()
{
printf("hoanh do : %d\ntung do : %d\n",x,y);
}

};

void main()
{
POINT p;
int a,b;

printf("hoanh do : ");
scanf("%d",&a);
printf("tung do : ");
scanf("%d",&b);
p.set_xy(a,b);
p.display();
}

zkday2686
11-09-2008, 01:47 PM
trong c++ nó qui ước là nếu không khai báo các từ khóa tầm vực thì nó sẽ auto hiểu là private. cho nên nó không thể cho bạn thao tác trược tiếp đến các thuộc tính như vậy được.

để thao tác được với nó bên ngoài phạm vi của lớp thì bạn phải để nó với từ khóa tầm vực là public.
hay là bạn thêm vào 2 hàm set và get giá trị cho nó.
khi cân set thì gọi hàm set. khi cần get thì gọi hàm get(cách này khuyên dùng.)


chúc bạn thành công


ps: lần sau bạn bỏ code vào các tag code, php cho dễ đọc nhé.0:)

nht2789
11-09-2008, 11:07 PM
cho mình hỏi muốn truy cập vao thành phần tọa độ trong bài nay thì phải làm như thế nào?
dùng : p.x thì báo lỗi.

ngay chỗ p.x này theo mình viết thì được gọi là vi phạm tính bao gói của lập trình hướng đối tượng
còn về phần truy cập vào thành phần tọa độ thì mỉnh nghĩ là nên làm như sau
.....

Point p;//khai bao đối tượng p của lớp Point
p.set_xy(int a,int b);
p.display();// truy cap vao thanh phan toa do x, y
.......

thangit
11-09-2008, 11:37 PM
to khanh_0507 bài của bạn mình ko thấy có gì sai , mình cũng ko hiểu ý bạn là muốn lấy ra hoành độ x, tung độ y trong hàm main à

Xcross87
12-09-2008, 10:54 AM
Lập trình OOP ai lại gọi thẳng cái p.x như bạn bao giờ :|
-_-;;

class POINT {
private x, y;

public set_x(int x) {
this.x = x;
}
public get_x() {
return this.x;
}
public set_y(int y) {
this.y = y;
}
public get_y() {
return this.y;
}

public set(int x, int y) {
this.set_x(x);
this.set_y(y);
}
}