私は解決方法を知らないという単純な問題があります。&は、データ型が問題ではない変数を扱うことに慣れています。私はWindowsタスクスケジューラ&それが持っている何百万ものオブジェクト、ITask ...このITask ...で働いています。実行時に主変数の型が決定される関数
だから私は、パラメータtriggerType(列挙VAR)に応じて&、機能を持って、変数トリガはあなたが見ればうわ、これは、テキストで説明するのは難しいです...タイプITimeTriggerまたはIBootTriggerのどちらかになりますがその下のコードは私の問題が何であるかを見るのが簡単です。以下の私の例を見て、私の問題を理解することが
そのALOT簡単に:
enum meh { I_WANT_A_INT = 50001, I_WANT_A_FLOAT };
bool foo(meh triggerType)
{
switch (triggerType)
{
case I_WANT_A_INT:
{
int trigger = 10;
}
break;
case I_WANT_A_FLOAT:
{
float trigger = 10.111;
}
break;
default:
{
double trigger = 11;
}
break;
}
trigger = 5 * trigger ; // Compile error because trigger is not declared
cout << trigger << endl;
}
私は、私が使用することができます知っているソリューションは、次のとおりです。
- 私は&は(ITimeTriggerのための1つを持っている機能をオーバーロードすることができますint)action & IBootTrigger(float)のための別のもの。これは私が本当にやりたいことではありません。なぜなら、関数が本当に長くて、それらの間にコードを繰り返すことが多いからです。
- ITimeTrigger & IBootTriggerは両方とも同じオブジェクトITriggerから継承しているため、スイッチの外側にトリガvarをITriggerとして宣言し、スイッチ内で必要なオブジェクトにキャストします。これは今でも動作しますが、 この関数を別の種類のタスクをスケジュールするように拡張すると、ITrigger(win32セマンティクス)から継承されないため、このソリューションは動作しません。
変数のトリガー(実行時にデータ型が決定される)を宣言することで、後でその関数でvarを使用することはできますか?
なぜあなたはC++でプログラミングしているときにPythonで考えていますか? [C++の本](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)を入手して、言語内で正しく機能する方法を学ぶことができます。 – GManNickG