プロが教える店舗&オフィスのセキュリティ対策術

VC++2005を利用しています。

comのidlにおけるオーバーロード・オーバーライドは未サポートと聞いたのですが本当でしょうか?

comで生成する自前クラスのオブジェクト比較を行いたく、
比較演算子(==)をオーバーロードしたいのですが、
他に方法があるのでしょうか?

A 回答 (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)
{
//クラスの型が一致
}
    • good
    • 0
この回答へのお礼

machongola様
ご回答ありがとうございました。

オブジェクト同士を比較する場合には
やはり1クッション操作を入れないと駄目ですね。

今回の目的は、JavaScript側で
if(toc1 == "ClassIsA") {
}
というようにObjectと文字列を比較したいので、
どうすれば良いのかと・・・

お礼日時:2009/12/11 13:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!