• 締切済み

クラスについて

環境 WIN2000 VC++6.0 MFC にて あるクラス(CShellListCtrlEx)内部に別のクラス(CCharEditEx)を作成することなんて可能なんでしょうか?。 ある程度は、できそうな気がするのですが・・・。 どうしても、仮想関数やWindowsメッセージハンドラが使えないで困っています。 どなたかご存知でしたら、ご教授お願いします。

みんなの回答

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

補足のところにかかれたコード、このままだと内部のクラスのメンバにアクセスするにはどうすればいいんでしょうかねぇ? あと、内部のクラスのコンストラクタに引数をどう渡すのか?というのはおいといて。 仮想関数は、普通に使えると思いますよ。 ただ、メッセージハンドラは、通常ウィザードが自動的に作成するコードも自分で書く必要があるので気合が必要でしょう。 具体的にどことは言いません(いっぱいあるし)。 なんで、普通はこうでしょうね。 //CharEditEx.h class CCharEditEx : public CEdit { public: CCharEditEx(int nItem, int nSubItem, CString &sContent) { m_nItem = nItem; // アイテム行番号格納 m_nSubItem = nSubItem; // アイテム列番号格納 m_sContent = sContent; // アイテム内容格納 m_bVK_ESCAPE = FALSE; }; ・ ・ ・ }; //----------------------------- //ShellListCtrlEx.h #include "CharEditEx.h" class CShellListCtrlEx : public CListCtrl { public: CShellListCtrlEx(int nItem, int nSubItem, CString &sContent) { m_m_pEditEx = new CCharEditEx(nItem,nSubItem,sContent); } ~CShellListCtrlEx() { delete m_m_pEditEx; } private: CCharEditEx * m_pEditEx; ・ ・ ・ }; 無理やり中にクラスを定義するメリットないです。 デメリットだらけです。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

”内部に別のクラス”って何でしょう? 継承ですか?それともメンバ変数のことですか? 何をされたいのでしょうか?

stussy
質問者

補足

説明不足で申し訳ありません、下記のようなことがしたいのですが・・・。 class CShellListCtrlEx : public CListCtrl { // コンストラクション public: CShellListCtrlEx(); // アトリビュート public: // オペレーション public: class CCharEditEx : public CEdit { public: CCharEditEx(int nItem, int nSubItem, CString &sContent) { m_nItem = nItem; // アイテム行番号格納 m_nSubItem = nSubItem; // アイテム列番号格納 m_sContent = sContent; // アイテム内容格納 m_bVK_ESCAPE = FALSE; } protected: int m_nItem; // アイテムの行番号 int m_nSubItem; // アイテムの列番号 CString m_sContent; // 編集前内容格納 BOOL m_bVK_ESCAPE; // エスケープキー使用時フラグ }; この場合、仮想関数やWindowsメッセージハンドラは使用できないのでしょうか?。

関連するQ&A