2012-10-15 22 views
5

我有一個關於OOP的基本問題。我想在類中創建一個方法,它使用這個類的兩個對象作爲參數,並根據這些對象的屬性返回一個float值。與對象無關的方法

public float MyMethod(CMyClass obj1, CMyclass obj2) 

當我想用在主這個方法(),我不能做這樣的:

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

我看不到這種方法,因爲它關係到一個對象。我可以這樣訪問它:

o1.MyMethod(...) 

但這沒有意義。

+3

你知道嗎,與Java不同,C++函數不*具有*作爲類的成員? –

+0

'公共float MyMethod(CMyClass obj1,CMyclass obj2)'這是C++語法錯誤。 –

回答

3

可以申報方法static,並訪問它像MyClass::MyMethod

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

你想

static float MyMethod(CMyClass obj1, CMyclass obj2) 

static關鍵字這裏將使方法屬於類,而不是在單個實例類/對象。訪問爲CMyClass::MyMethod

+1

不像在Java中,在C++中公共修飾符不是用於修改方法 – nogard

+0

的修復。 ......。 – djechlin

3

既然你想訪問這些的屬性,使用一個朋友功能(非會員)。你可以在你的類中聲明它:

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

你也可以使用static作爲其他的說法,但'static'關鍵字已被濫用,不要一直使用static!對於運營商超載,朋友或免費功能比較好。 – Gob00st