Class * a=new Class2();
Class * b=new Class3();
この状態でaとbを*a==*bで比べたいんですよ。
ここでClass2とClass3の==の定義は
void operator==(Class a,Class b);
になるとおもうんですけど、
基底のClassの部分しか見えないから比べようがないですよね。