1
voidメンバ関数へのポインタを含むタプルを作成しようとしていますが、動作させるのに問題があります。 ここに私のコードです:「無効表現の使用は無効です」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 getinfo(void(A::*func)())
{
make_tuple((aobj->*func)());
}
、それはまだ私に同じエラーを与えます。
'(aobj - > * func)()'はこのメソッドを呼び出しますが、何も返されません。あなたはタプルに何も置こうとしていません。メンバーポインタ自体を配置したい場合は、 'make_tuple(n1、n2、func)' –
@IgorTandetnikですが、これは答えに変換する価値があると思います。 –