C ++テンプレートクラスを使用してオブジェクトタイプを区別できますか?または私は何を使うべきですか?
例えば。私はクラスを持っています、そしてそれは例えばSynonym
タイプであることができます。Statement, Procedure, etc
これらの同義語を受け入れ、そのタイプに応じて評価する関数があります。だから私は次のようなことができればいいと思っていました:
enum Types { Statement, Procedure, Variable, ... };
template <typename Types>
class Synonym { ... }
void evaluate(Synonym<Statement> s, Synonym<Variable> v) { do something }
^ so that I can do this ... instead of checking the type in function like:
void evaluate(Synonym s, Synonym v) {
assert(s.type == Statement);
assert(v.type == Variable);
// also would like to eliminate things like: (if possible)
switch(s.type) {
case XXX: doSomething ...
case YYY: doAnotherThing ...
}
}