C++在另一个类中调用成员函数,而他们两个在同一个类中
问题描述:
是否有解决此问题的方法?我只想在另一个班级中调用成员函数,而他们两个在同一个班级中。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;
}
答
首先让FUNC()公众,你做的事。
然后调用FUNC()从外部ClassA的使用:
ClassA::func();
+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或该方法在范围内的任何位置调用它。
没有。 C++不能以这种方式工作。 –
您需要使用::而不是。这是更现代的语言使用。 –