none
グローバル変数および関数の作成方法 RRS feed

  • 質問

  • Visual C++ 2010 Express の開発について

    ①親子フォームが4フォームがある。

    ②親子フォームで共通で使用できる変数および関数の作成方法を教えて下さい。

    クラスビューにおいてマウスの右ボタンを押して追加を選択しても、変数の追加の項目はない。

    • 移動 星 睦美 2014年8月25日 7:34 Visual C++ から
    2014年8月25日 7:23

回答

  • C++/CLI がよいのでしょうか?
    C++/CLI は C++ と .NET の両方の知識・経験を求められる難易度の高い言語・開発環境であり、さらに 2012 以降では Windows フォームのプロジェクトテンプレートが削除されている言語・開発環境です。(Windows フォームアプリケーションを C++/CLI で作ることは将来性に危惧があると言うことです)
    新たに .NET の Windows フォームアプリケーション開発を学ばれるのであれば C# の利用をお勧めします。
    また、C++/CLI を学ぶことは C++ の勉強とは言えませんのでご注意ください。

    さて、C# もそうですが、C++/CLI も変数の追加といったウィザードで作るものではありません。
    追加できる場面もあるかもしれませんが、基本的には自分でコードを書くことが主体になります。
    今回のシナリオでどのようにフォームをつなぐのかわかりませんが、グローバル変数のようなものがよいのでしょうか?
    どうしてもグローバル変数のようなものが欲しいのであれば、クラスに static のキーワードをつけた変数を設けるのも一手ですが、できれば、オブジェクトを渡す、イベントで親に通知するなどの考え方も勉強していただきたいです。

    2014年8月25日 13:18
    モデレータ

すべての返信

  • C++/CLI がよいのでしょうか?
    C++/CLI は C++ と .NET の両方の知識・経験を求められる難易度の高い言語・開発環境であり、さらに 2012 以降では Windows フォームのプロジェクトテンプレートが削除されている言語・開発環境です。(Windows フォームアプリケーションを C++/CLI で作ることは将来性に危惧があると言うことです)
    新たに .NET の Windows フォームアプリケーション開発を学ばれるのであれば C# の利用をお勧めします。
    また、C++/CLI を学ぶことは C++ の勉強とは言えませんのでご注意ください。

    さて、C# もそうですが、C++/CLI も変数の追加といったウィザードで作るものではありません。
    追加できる場面もあるかもしれませんが、基本的には自分でコードを書くことが主体になります。
    今回のシナリオでどのようにフォームをつなぐのかわかりませんが、グローバル変数のようなものがよいのでしょうか?
    どうしてもグローバル変数のようなものが欲しいのであれば、クラスに static のキーワードをつけた変数を設けるのも一手ですが、できれば、オブジェクトを渡す、イベントで親に通知するなどの考え方も勉強していただきたいです。

    2014年8月25日 13:18
    モデレータ
  • 自分もAzuleanさんのご意見同様、C++/CLIはGUIアプリケーションを記述するためのメイン言語などではなく、あくまでグルー言語として使うべきマニア向け言語拡張だと考えています。
    未だにC++/CLIでWindows Formsを使っている人・使おうとしている人が意外に多いようで残念なのですが、そもそもマイクロソフトはC++/CLI(Managed C++)向けのWindows FormsアプリケーションのテンプレートをVisual Studioに含めるべきではなかったと考えています。
    どうも質問を見る限り中途半端に知ったMFCのDDXあたりを.NETにも持ち込もうとしているかのような雰囲気ですが、まずどの言語環境でも通用する「オブジェクト間の親子関係・兄弟関係・相互参照・コンポジション(そしてシングルトン)を表現する一般論」を基礎からみっちり勉強してからGUIアプリケーションにとりかかるべきでしょう。ちゃんと基本がわかっていれば、そもそもこういったことを他人に聞こうとは思わないはずです。今後Windows環境で効率良くGUI開発したいのであれば、たとえ一見遠回りに見えても、まずC#言語とオブジェクト指向をコンソールアプリケーションベースでみっちり勉強して、そのうえでGUIに手を伸ばすべきです。
    • 編集済み sygh 2014年8月25日 16:12
    2014年8月25日 15:24