无效成员函数的元组
tuple of void member functions
我正在尝试创建一个包含指向 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
};
};
它给我错误 "invalid use of void expression."
我还尝试将函数简化为:
void getinfo(void(A::*func)())
{
make_tuple((aobj->*func)());
}
它仍然给我同样的错误。
正如 Igor Tandetnik 指出的那样,(aobj->*func)() 正在调用该方法并将 void 返回给 make_tuple() 函数。要传递成员指针,它应该改为 make_tuple(n1,n2,func).
我正在尝试创建一个包含指向 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
};
};
它给我错误 "invalid use of void expression." 我还尝试将函数简化为:
void getinfo(void(A::*func)())
{
make_tuple((aobj->*func)());
}
它仍然给我同样的错误。
正如 Igor Tandetnik 指出的那样,(aobj->*func)() 正在调用该方法并将 void 返回给 make_tuple() 函数。要传递成员指针,它应该改为 make_tuple(n1,n2,func).