CFormViewの拡張クラスをベースとしたクラスを作成するには?

解決


イカ  2006-04-12 01:25:27  No: 61193

VC++6.0での開発です。
CFormViewの拡張クラスを作成し(CFormViewEx)、
このクラスをベースとしたクラス(CMyView1, CMyView2)を作成したいと考えております。
以下のような形です。
class CMyView1 : public CFormViewEx
class CMyView2 : public CFormViewEx
class CFormViewEx: public CFormView

以下のように定義してみましたが、リンクエラーが発生してしまいます。
CMyView1::CMyView1():CFormViewEx(CMyView1::IDD)
CFormViewEx::CFormViewEx(UINT nIDTemplate):CFormView(nIDTemplate)

error C2512: 'CSwitchVw' : クラス、構造体、共用体にデフォルト コンストラクタがありません。

CFormViewが動的サブクラス化のため、IMPLEMENT_DYNCREATE、DECLARE_DYNCREATEを使用しているため、デフォルトコンストラクタを必要とするためなのは分かったのですが、対処方法が分かりません。

どなたか教えて頂きたく、よろしくお願い致します。


dairygoods  2006-04-12 18:37:03  No: 61194

CSwitchVw クラスは説明に出てきませんが何ですか?

CFormViewEx のことなら、DECLARE_DYNCREATE の代わりに DECLARE_DYNAMIC を使います。(派生して使うためのクラスを直接生成することはないですから。CFormView も DECLARE_DYNAMIC です。)

CMyView1 のことなら、引数を持たないデフォルトコンストラクタを定義すればよいです。


イカ  2006-04-14 18:46:30  No: 61195

dairygoodsさん。
回答遅くなりもうしわけありません。
dairygoodsさんのご指摘どおりでうまくいきました。
ありがとうございました。
ちなみに、CSwitchVwクラスは、本ソースのクラスで、説明のためにCMyView1と置き換えたものでした。変換漏れです。混乱させてしまい申し訳ありませんでした。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加