- ベストアンサー
オペレーターの使い方がよくわかりません。
Var に対して、int型変数を受け渡すのわかったのですが int型変数に、Varの内容を受け渡す方法が良くかわかりません。 (こんなことはできない?) class CMtcmOleVariant : public tagVARIANT { const CMtcmOleVariant& operator=(int x); // Ok int operator=(const CMtcmOleVariant& var); // NG } CMtcmOleVariant Var; int ix = 999; Var = ix; // OK ix = Var; // NG よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>ix = Var; // NG というのがしたいなら、operator=() でなくて operator int() を定義する必要があるでしょう。あんまりしないけど。
その他の回答 (1)
- machongola
- ベストアンサー率60% (434/720)
こんにちは。tagVARIANTは確か共用体でしたね。以下参考程度に。 class CMtcmOleVariant : public tagVARIANT { public: CMtcmOleVariant() { intVal = 0; /*その他のメンバの初期化*/ } CMtcmOleVariant(const CMtcmOleVariant& r) { intVal = r.intVal; /*その他のメンバのコピー*/ } CMtcmOleVariant& operator = (const CMtcmOleVariant& r) { if(this != &r) new (this) CMtcmOleVariant(r); return *this; } template<class T> CMtcmOleVariant(const T& v){ ((T&)intVal) = v; } template<class T> operator T&(){ return (T&)intVal; } template<class T> operator const T&() const { return (const T&)intVal; } }; int main() { CMtcmOleVariant Var; void* pv = 0; IUnknown**ppunk= 0; short s = 0; Var = pv; pv = Var; Var = ppunk; ppunk = Var; Var = s; s = Var; return 0; }
お礼
ありがとうございます。m(__)m