有没有办法将函数调用从类传递给类? 例如:
//foo.cpp
foo::foo
{
...
myfoo2 = new foo2();
...
}
//foo2.h
class foo2
{
...
public:
void method1();
void method2(int arg2)
...
}
现在我想从foo类的外部使用foo2的方法(例如method2) 无需实施以下内容:
//foo.cpp
...
void foo::method2(int arg2)
{
myfoo2->method2(arg2);
}
问题是,我有很多这些,这将占用大量空间并且看起来不太好。 有没有其他解决方案,或者至少有一个具有相同效果的简短版本?
提前谢谢!
答案 0 :(得分:1)
您可以使用私有继承在foo类中包含foo2对象,而不创建is-a关系。然后你可以使用using语句公开函数,如下所示:
class foo : private foo2
{
public:
using foo2::method2;
};
答案 1 :(得分:1)
如果foo
只是foo2
的句柄或包装,则重载operator->
可能有意义:
#include <iostream>
class foo2 {
public:
void method1(){ std::cout << "method1\n"; }
void method2(int /*arg2*/) { std::cout << "method2\n"; }
};
class foo {
foo2 myfoo2;
public:
foo2* operator->() { return &myfoo2; }
};
int main() {
foo f;
f->method1();
f->method2(1);
}
答案 2 :(得分:0)
为什么不在foo类中有一个方法返回指向你的foo2类的指针(或const指针),如下所示:
class foo
{
public:
foo2* getFoo2() const { return foo2_; }
private:
foo2* foo2_;
};
然后在外面你可以像这样使用它:
foo f;
auto f2 = f.getFoo2();
f2->method1();
f2->method2(/*args*/);