- - PR -
VC++ クラスの関数の呼び出し
«前のページへ
1|2|3
| 投稿者 | 投稿内容 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-01-20 16:30
Listboxobのコンストラクタには親クラスのコンストラクタを書いたほうがよいということなのかなぁ? というか、エラーメッセージはそのままコピペしてください。 親クラスのコンストラクタは引数を取らないものがあるのですよね? 例えば
こんなのはエラーです。 Hoge() : Base( 1 ) {} のように親クラスのコンストラクタを指定して呼んであげるようにしなければなりません。 # もしもこうならば、クラスの設計がわからないのでLitboxojが何者であるかがわからない # 以上何もアドバイスできません。 ## 例えば MFCのようにウィンドウハンドルを持たないといけないとかなったときに ## ローカル変数にインスタンス作って〜みたいなことは、どうなの?? ## ってことになるかと。 [ メッセージ編集済み 編集者: Blue 編集日時 2006-01-20 16:48 ] | ||||||||||||||||
|
投稿日時: 2006-01-20 16:39
これは、仮想デストラクタと呼ばれるもので、インスタンスをポインタ(または参照)で扱うときに問題になります。 (今回はあまり重要ではない) こちらのサイトを参考にどうぞ 第20章 デストラクタ(仮) ここがなにをいっているかわからないようであれば、 第2部 クラスを知ろう の14章あたりから読んでみてください。 | ||||||||||||||||
|
投稿日時: 2006-01-20 16:44
こんにちは。
デフォルトコンストラクタとは、「引数のない」あるいは「(デフォルト引数で)引数の省略できる」コンストラクタのことです。 でも、提示されているコードを見る限り、Listboxobクラスにデフォルトコンストラクタがあるんですし なぜデフォルトコンストラクタが要求されているのかが分かりません。 おかしいですねぇ。
Listboxobの基底クラスCobが仮想デストラクタをもっているので、 Listboxob::~Listboxob()にvirtualが付いてなくてもかまいませんよ。 ただ、デストラクタにはvirtualをつけるクセをつけておいたほうが安心ですね。 仮想デストラクタの効果は例えば、
としたときに、deleteでListboxob::~Listboxob()が呼び出されます。 もし仮想デストラクタでなければ、Cob::~Cob()が呼び出されるのですが、 これでは正しくデストラクタが呼び出せていないため、メモリリークなどの原因となってしまいます。 | ||||||||||||||||
«前のページへ
1|2|3
