• 締切済み

comのidlにおけるオーバーロード

VC++2005を利用しています。 comのidlにおけるオーバーロード・オーバーライドは未サポートと聞いたのですが本当でしょうか? comで生成する自前クラスのオブジェクト比較を行いたく、 比較演算子(==)をオーバーロードしたいのですが、 他に方法があるのでしょうか?

みんなの回答

回答No.1

 こんばんは。  的外れでしたらご勘弁を。  operator系のオーバーロードは不可能な筈です。  I???インターフェースがClassAなのかClassBなのか、と言う事でしたら、当方の手元にあるCOM/OLEの書籍では、ピザの種類を見抜くため(クラスの比較とは違うのですが)にtypedef enumを使用して送り返しています。 interface I??? : public IDispatch { HRESULT STDCALL ClassIsA(TypeOfClass* pType) = PURE; }; //IDL側 typedef enum { ClassA, ClassB } TypeOfClass; [propget, id(?), helpstring("property get type of class")] HRESULT ClassIsA([out, retval] TypeOfClass* pType); //利用する時 TypeOfClass toc1; TypeOfClass toc2; p1->ClassIsA(&toc1); p2->ClassIsA(&toc2); if(toc1 == toc2) { //クラスの型が一致 }

hir0627
質問者

お礼

machongola様 ご回答ありがとうございました。 オブジェクト同士を比較する場合には やはり1クッション操作を入れないと駄目ですね。 今回の目的は、JavaScript側で if(toc1 == "ClassIsA") { } というようにObjectと文字列を比較したいので、 どうすれば良いのかと・・・

関連するQ&A