いつもお世話になっています。けじゅです。
クラスの継承をつかって 派生クラスにすれば基本クラスの関数を使えると
思い実行してみましたが。
下記のプログラムのprogram()が認識しないエラーが発生します。
void CSubdlg::OnButton1()
{
program(124);
}
質問 アドバイスお願いします。
多分、こんな訊き方では答えられる人はいないと思います。
program()ってなんですか? 文脈から判断すればCSubdlgの基底クラスのメンバ関数のよう
な気もしますが、そうなんですか? 本当にそうなっていますか? program()のスコープが
privateになっていたりしませんか?
...というように、問題となりそうな所をあれやこれや考えて、けじゅさんに質問攻めに
しなくてはなりません。質問の中で語られるべき必要な情報が圧倒的に足りないからです。
とりあえずCSubdlgとその基底クラスがどのように宣言されているか、見せてもらえませんか?
せめて、エラーの情報くらいは書いて欲しいです。
実行エラーなのか、コンパイルエラーなのかくらいは。
そろそろ、ここを読んでは?(「使用上の注意」にも書いてありますが)
http://www.hyuki.com/writing/techask.html
というか、読んできちんと理解して欲しい。
私はこのページを情報源として活用させていただいてますが、
こういった質問の仕方が原因で、
貴重な情報が過去ログに埋もれて行くのがもったいない気がします。
(人の目に留まらなくなるので)
確かにひどいですね、まず人に質問する内容を他人が見て理解できる
か確かめてから書くべきです。
あなたの質問文脈からすると
基底クラスCDialogクラス内にある「program()」を使いたいと読み取れますが
CDialogクラスには「program()」はありません
MSDNに載っていない関数が動かないから教えてくれ、と言う質問をする場合
派生クラス宣言部を最低示すのが礼儀でしょう
想像すると「program()」というのはもうひとつのダイアログを表示させるものでしょう
けど(前回の質問内容から)
タイトルと違った質問してませんか?
DoModalはしってますか?
ところで
環境・OS・サービスパック・開発技術(API MFC) 示すのはどうなった
いくら継続質問に近い内容でも、スレッド変えたのだから
きちんと説明すべきです
>派生クラス宣言部を最低示すのが礼儀でしょう
これ間違いかも
「program()」のプロトタイプ宣言のほうが正しいかも...
私は想像でしか、話していませんので「基本クラス」を示すのも礼儀かと?
なんか改善されてない気がする。(質問し方が)
皆さんが言われている通り前後関係とか派生/継承の関係がわかるように
ソースを公開しないとクラスの前後関係が全くわからないので回答のしようが
ありません。
で、この辺の情報まで公開しないと全体が把握できないだろうなぁと言うのが
ピンと来ないという事は、まだまだC++言語とはなんぞやがよく分かっていない
証拠ですね。
個人で日曜プログラマをやっているなら、仕方ない部分もあると思いますが、
学生さんで学校でもプログラミングの勉強しているとかなら学校で基本的な部分の
質問をどしどしやって基本はしっかり理解した方がいいです。
この手の知識を習得するのに近道はありません。
一つ一つ確実に習得していくのが大切だと思います。
一足飛びにウインドウアプリを作ろうとしても無理があるような気がします。
簡単なモデリングとクラスの作成でクラスの挙動をしっかり把握された方が
よろしいかと。