2016-02-28 156 views
-3

是否有解决此问题的方法?我只想在另一个班级中调用成员函数,而他们两个在同一个班级中。C++在另一个类中调用成员函数,而他们两个在同一个类中

class ClassA { 
public: 
    void func() { printf("Hello World\n"); } 
}; 

class ClassB { 
public: 
    void testfunc() { 
     // TODO: call func() in classa; 
    } 
}; 

class ClassAB { 
private: 
    ClassA classa; 
    ClassB classb; 
public: 
    ClassA& getClassa() { return classa; } 
    ClassB& getClassb() { return classb; } 
}; 

int main() { 
    ClassAB classab; 
    classab.getClassb().testfunc(); 
    return 0; 
} 
+0

没有。 C++不能以这种方式工作。 –

+0

您需要使用::而不是。这是更现代的语言使用。 –

回答

-2

首先让FUNC()公众,你做的事。

然后调用FUNC()从外部ClassA的使用:

ClassA::func(); 
+0

将此建议为答案之前,请亲自尝试。它不会工作。这只适用于静态类方法。 –

0

需要ClassA的一个实例调用FUNC。

也许你会通过你有到testfunc((唯一)实例):

// ... 

class ClassB 
{ 
public: 
    void testfunc(ClassA classa) 
    { 
     classa.func(); 
    } 
}; 

// ... 

int main() 
{ 
    ClassAB classab; 

    classab.getClassb().testfunc(classab.getClassa()); 

    return 0; 
} 

在代码中,ClassA的:: FUNC()是公开的,但不是一成不变的。您只能从ClassA的实例中调用非静态公共方法属性。

将func()更改为静态,然后是,您可以使用ClassA :: func(),从main或该方法在范围内的任何位置调用它。

相关问题