• ベストアンサー

自作のクラスの基底クラスは何を使えばよいのでしょうか?

VC2005のウィザードを使うとで枠は作られるので、そこまでは問題なくえきました。 MFCでは関数でなくクラスを作成して、それを使いまわすというやり方のようなので 今度、自作のクラスの作成したいのですが 基本クラスを選択しようとすると、たくさん出てきまして、どれを選択したらよいか判断付きません。 クラス名は、テストなのでCTestとしますが、 画面など他から拡張するクラスを作るのではなく、以前作成した関数の集まり程度のものなので、シンプルな基底クラス(というのでしょうか?)から作成したいです。 何を選べば一般的でしょうか? 作成したクラスの使い方(宣言の仕方など作法)について詳しく書かれている本をご存じ方も教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • buriburi3
  • ベストアンサー率44% (353/792)
回答No.3

クラスを作成する時に「MFCクラス」を選択していませんか? 独自のクラスを作成する場合には「C++クラス」を選択します。 「MFCクラス」を選択すると必ず派生元を指定しなければならず"なし"が選べません。

その他の回答 (2)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

適当な既定クラスが無いならとりあえずCObjectを選択しておいて 生成されたヘッダーのクラス宣言の『 : public CObject』を削除すればいいのでは?

回答No.1

基底クラスとして適当なものが見当たらないなら、 "なし"がbestな選択です。

tobasu
質問者

補足

ウィザードの基本クラスに”なし”がありませんでした。 どれかを選ぶしかなく、CWndやCWinAppを選ぶのでしょうか? 間違えて、CWinThreadを選びましたが、この場合はスレッドを使う場合はこのクラスを基本クラスとして使うべきということでしょうか?

関連するQ&A

  • マネージクラスについて

    マネージクラスで可変長の引数を使いたいのですが、 public ref class CTest { public: CTest(); // コンストラクタ ~CTest(); // デフォルトコンストラクタ !CTest(); // ファイナライザ Msg(PSTR str, ...); // 可変長引数 }; とすると、 「error C3269: マネージ クラスのメンバ関数は '...' と共に宣言することはできません」 というエラーがでてしまいます。 なんとかしてマネージクラスで 可変長の引数を使いたいのですが、方法がわかりません。分かる方いますでしょうか?

  • 新規クラスの使い方

    <環境> WIN98 VC++6.0 MFC  デフォルトでプロジェクトを作成。 オリジナルの新規クラスを作成。 新規クラス内でXXview.h内で宣言した変数を使いたいので 新規クラス内で#include <XXview.h>とすると、 error C2143: 構文エラー : ';' が '*' の前に必要です。等のエラーが出ます。 これを回避する方法を教えてください。

  • 住所録用クラスについて

    <環境> WIN98 VC++6.0 MFC  住所録用クラスを作ろうと思います。 特に基本クラスを設定するつもりは無いのですが、クラスの新規作成を選ぶと基本クラスを選択する必要が有りますよね。 このような場合は、何を選択すれば良いのでしょうか?

  • クラスについて

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

  • 別のクラスからのタイマの起動方法

    CXXXDlg ダイアログクラスに // ---------- タイムカウントタイマ起動 ---------- UINT CXXXDlg::StartTimeCount(UINT Interval) {   return SetTimer(1, Interval, NULL); } と言うメンバ関数を作り、別のクラスCTestで、下記の様な 感じでタイマ起動をしてOnTimerにて、ある変数のインクリ メント行おうとしているのですが、エラーが発生してしまいます。(コンパイルはOKです。OnTimerはもちろんCXXXDlgクラスに宣言) void CTest::TestTest() { CXXXDlg CXDlg; //100msタイマ起動 CXDlg.StartTimeCount(100); <- ここでエラー . . . (処理) . . . } WM_TIMERメッセージはウインドウが無いといけないことは 知っているのですが、上記の様な起動の仕方でも、やはり 駄目なのでしょうか?理由を教えて頂けるとありがたいで す。また、ダイアログクラスとは別のクラスでタイマの 起動・停止が可能でしたら、その方法もご存じの方 教えて下さい。 環境はWin2000 VC++ 6.0 SP6 MFC ダイアログベース です。よろしくお願いいたします。

  • クラス間の変数について

    よろしくお願いします。 VC++のウィザードが自動生成するChildFrm.cpp内のクラスAとMainFrm.cpp内のクラスBの間で共通の変数int xxxを使いたいのですが、どこに宣言すれば良いのでしょうか? それともクラス間では、そのようなことは出来ないのでしょうか? ご存知の方教えてください。

  • VC#2008自作クラスメソッドツールチップ

    VC#2008で自作クラスを作成しました。 そのクラスのメソッドを利用する際に、ツールチップで使い方を表示させたいのですが、可能でしょうか?

  • 【VC++】クラスの追加方法について

    VC++の操作方法についての質問です。 現在、VC++2005を用いて、MFCダイアログベースアプリケーションを作成しています。 クラスの追加方法についての質問ですが、 「クラスビュー」⇒「プロジェクト」で右クリック⇒「追加」⇒「クラス」でウィザードに従って追加すると、 ウィザード内で基本クラスをコンボボックスより選択しなければならず、 この方法で追加すると、選択した基本クラスを継承する形でクラスが自動生成され、クラスビューにマップと基本型が追加されます。 現在作成に当たって参照しているサンプルプログラムでは、新たにクラスが定義されているようですが、 マップと基本型は生成されておらず、基本クラスも定義されていないのです。 どのように操作すれば、サンプルのように基本クラスを定義せず、 マップと基本型も追加されずに、クラスを追加できるのでしょうか? また補足ですが、クラスを追加した後は、別の自分で定義した親クラスを継承させるようにコードを変更したいと思っております。 お分かりの方おられましたら、お手数ですがご教授お願い致します。

  • CListCtrlクラスに初期化する関数はないのでしょうか?

    お世話になります。 VC++6.0 MFC で開発しております。 CtreeCtrlクラスのResetContent()のように CListCtrlクラスに初期化する関数はないのでしょうか? ※アイテムや列を削除する関数は見つけれたのですが。。。

  • メニューを追加した時の実装を書くクラスは?

    環境 WIN98 VC++6.0 MFC にて メニューにコマンドを追加しクラスウィザードにて、コマンドの実装をするときに、CxxxMainFrmクラスとCxxxViewクラスのどちらにも実装出来ます。 どうしてどちらにも実装できるのですか? また、それぞれの使い分けはどうなっているのですか?

専門家に質問してみよう