我有问题。我有两个类,我需要将一个成员作为参数传递给另一个类的另一个成员,如下所示:
class A{
public:
int functionA(string x);
.
.
.};
和
class B{
public:
void functionB( /*here would go functionA*/);
.
.
.
};
这就是functionB(...)
的样子。
void B::functionB( /*functionA*/){
string x = generateString();
functionA(x);
.
.
.
}
我怎么能这样做?我尝试使用function<int(string)>& fun
但看起来并不是在有课时。我也试过了functionB(int(aClass::*func)(string),aClass& a)
,但结果和以前一样。
任何帮助都将不胜感激。
谢谢!
答案 0 :(得分:1)
如果您使用的是C ++ 11或更高版本,则可以使用lambda:
执行此操作class A
{
public:
void functionA(const std::string& x)
{
// do something with string
}
};
class B
{
public:
void functionB(const std::function<void(const std::string&)>& lambda)
{
lambda("test");
}
};
当你打电话时,你会这样做:
A a;
B b;
b.functionB([&a] (string x) { a.functionA(x); });
这里有一个完整的演示:http://cpp.sh/5w6ng
答案 1 :(得分:1)
我试过功能&amp;有趣,但看起来像有课时不打算。
看起来你试错了,它运作得很好:
class A {
public:
void foo(std::string str) { std::cout << str << std::endl; }
};
int main()
{
A a;
std::function<void(std::string)> f = std::bind( &A::foo, &a, std::placeholders::_1 );
f("test");
}