2012-10-15 33 views
5

Tôi có câu hỏi cơ bản về OOP. Tôi muốn tạo một phương thức bên trong lớp có sử dụng 2 đối tượng của lớp này làm đối số và trả về một giá trị float dựa trên các thuộc tính của các đối tượng này.Phương pháp không liên quan đến một đối tượng

public float MyMethod(CMyClass obj1, CMyclass obj2) 

Khi tôi muốn sử dụng phương pháp này trong main() Tôi không thể làm điều đó như thế này:

CMyClass o1 = CMyClass(); 
CMyClass o2 = CMyClass(); 
float x = MyMethod(o1, o2); 

tôi không thể thấy phương pháp này vì nó có liên quan đến một đối tượng. Tôi có thể truy cập nó như thế này:

o1.MyMethod(...) 

nhưng điều này không có ý nghĩa.

+3

Bạn biết rằng, không giống như Java, hàm C++ không * có * là thành viên của lớp không? –

+0

'public float MyMethod (CMyClass obj1, CMyclass obj2)' đây là lỗi cú pháp trong C++. –

Trả lời

3

Bạn có thể khai báo các phương pháp static, và truy cập vào nó như MyClass::MyMethod

class MyClass { 
public: 
    static void MyMethod(const MyClass & arg1, const MyClass & arg2) {} 
}; 
1

bạn muốn

static float MyMethod(CMyClass obj1, CMyclass obj2) 

static từ khóa ở đây sẽ làm cho phương pháp này thuộc về lớp, không phải là một ví dụ cá nhân của lớp/đối tượng. Truy cập dưới dạng CMyClass::MyMethod.

+1

không giống như trong Java, trong C++ public không phải là công cụ sửa đổi cho phương thức – nogard

+0

được sửa. ... .... – djechlin

3

Vì bạn muốn truy cập thuộc tính của những người đó, hãy sử dụng chức năng bạn bè (không phải thành viên). Bạn có thể khai báo nó trong lớp học của bạn:

friend float MyMethod(CMyClass obj1, CMyclass obj2); 
+0

Bạn cũng có thể sử dụng tĩnh như đã nói, nhưng từ khóa 'tĩnh' đã bị lạm dụng, không sử dụng tĩnh mọi lúc! Đối với những thứ như quá tải nhà điều hành, bạn bè hoặc chức năng miễn phí là tốt hơn. – Gob00st

Các vấn đề liên quan