与对象无关的方法

时间:2012-10-15 16:39:29

标签: c++

我有一个关于OOP的基本问题。我想在类中创建一个方法,该方法使用此类的2个对象作为参数,并根据这些对象的属性返回一个浮点值。

public float MyMethod(CMyClass obj1, CMyclass obj2)

当我想在main()中使用这个方法时,我不能这样做:

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

我看不到这个方法,因为它与一个对象有关。我可以像这样访问它:

o1.MyMethod(...) 

但这没有意义。

3 个答案:

答案 0 :(得分:3)

您可以声明方法static,并像MyClass::MyMethod

一样访问它
class MyClass {
public:
    static void MyMethod(const MyClass & arg1, const MyClass & arg2) {}
};

答案 1 :(得分:3)

由于您要访问那些属性,请使用友元函数(非成员)。你可以在课堂上声明它:

friend float MyMethod(CMyClass obj1, CMyclass obj2);

答案 2 :(得分:1)

你想要

static float MyMethod(CMyClass obj1, CMyclass obj2)
这里的

static关键字将使该方法属于该类,而不是该类/对象的单个实例。访问为CMyClass::MyMethod