特定の型を特定し、 boost::variant
それをクラスオブジェクト内のメンバー関数引数として渡すことで、次の問題を混乱させています。次のコードを検討してください
typedef boost::variant<int, string, double> Variant;
class test{
void func1 (Variant V);
void func2 (string s);
void func3 ();
};
test::func1(Variant V){
// How can I identify the type of V inside the body of this function?
Or how can I call the apply_visitor inside this function.
/*
if(v.type() == string)
func2();
else if(v.type() == double)
funct3();
*/
}
int test::func2(){ cout << "func3" << endl;}
int test::func3(){ cout << "func4" << endl;}
...
int main ()
{
test t;
Variant V = 3;
t.func1(V);
V = "hello";
t.func1(V);
}
クラステスト内に訪問クラス/構造(apply_visitor)を実装することを確信しました。しかし、ビジター クラスに実装されているオーバーロードされた演算子から func3(string s) という外部メンバー関数を呼び出すことで行き詰まりました。