void成员函数的元组

tuple of void member functions

本文关键字:元组 函数 成员 void      更新时间:2023-10-16

我正试图创建一个元组,其中包含一个指向void成员函数的指针,但我很难使其工作。这是我的代码:

class A
{
    void dostuff(){ cout<<" doing stuff "}
};
class B
{
    A* aobj;
    typedef vector<vector<tuple<int,int,void(A::*)()>>> sequence;
    sequence Sequence;
    void getinfo(int n1, int n2, void(A::*func)())
    {
        Sequence.resize(1);
        Sequence[0].push_back(make_tuple(n1,n2,(aobj->*func)()))//<--ERROR HERE
    };
};

它给了我一个错误"无效使用void表达式"我还试图将函数简化为:

void getinfo(void(A::*func)())
{
    make_tuple((aobj->*func)());
}

它仍然给我同样的错误。

正如Igor Tandetnik所指出的,(aobj->*func)()正在调用该方法,并将void返回给make_tuple()函数。要传递成员指针,它应该是make_tuple(n1,n2,func)。