如何将类的成员传递给另一个类的另一个成员

时间:2017-01-24 18:59:51

标签: c++ class parameters

我有问题。我有两个类,我需要将一个成员作为参数传递给另一个类的另一个成员,如下所示:

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),但结果和以前一样。

任何帮助都将不胜感激。

谢谢!

2 个答案:

答案 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");
}

live example