RTTI の回避に関するいくつかの質問を見ましたが、私の質問はもう少し具体的であるようです。次に例を示します。
struct Base {};
struct A : Base {};
struct B : Base {};
struct C : Base {};
std::vector<Base*> vec;
ベクトル内のすべての可能な (順序付けされていない) オブジェクトのペアで何かをしたい (ベクトルに 0 と 1、0 と 2、1 と 2 の 3 つの要素がある場合)。私が欲しいものの疑似コードは次のようなものです:
if e1 is A and e2 is A:
behavior1(e1, e2)
elif e1 is A and e2 is B:
behavior2(e1, e2)
elif ...
多くの人が RTTI は設計が悪いと言っていますが、ここで避けることはできますか? そして、これらすべてのif/elifを実行するよりも効率的な方法はありますか?