質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

Q&A

解決済

1回答

1774閲覧

Visual C++/CLRによるWindowsフォームアプリケーション

nartoc

総合スコア12

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

0グッド

0クリップ

投稿2016/12/24 16:01

コード ```Visual StudioでWindowsフォームを作るとC++プロジェクトの中に"フォーム名.h"ファイルができ、このファイルの中でフォームはクラスとして生成され、フォーム内のコントロールはクラスのprivateコンポーネントとして生成されます。 対話式のアプリケーションを作ってコントロールを読み書きしたいのですが、外部(例えば"フォーム名.h"と対になっている"フォーム名.cpp"内のコード)からコントロールをアクセスする方法が分かりません。 上記のとおり、コントロールはクラスのprivateコンポーネントなので外から見えません。フレンド定義しようとしたら、フォームのクラスはマネージ型なのでフレンド定義は使えないというエラーになります。 しかたなく、いまはクラスの中のメンバー関数としてアプリケーション部分のコードを記述していますが、.hに定義、.cppに実装を記述しろというC++のマナーに反しますし、そもそもOOPとして邪道のような気もします。 どうしたらいいのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。

しかたなく、いまはクラスの中のメンバー関数としてアプリケーション部分のコードを記述していますが、.hに定義、.cppに実装を記述しろというC++のマナーに反しますし、そもそもOOPとして邪道のような気もします。

まず、「.hに定義、.cppに実装を記述しろというC++のマナー」はマナーではないですよ。
それが必要な場合(テンプレート)やその方が好ましい場合(極小さな関数など)は躊躇なく.hで実装するべきです。
とはいえ、「メンバー関数としてアプリケーション部分のコードを記述」することを躊躇されているということは、今回は必要や好ましい場合に該当しなさそうですね。

アプリケーションとしての機能はアプリケーションを実装しているクラス側で記述し、フォームのクラスはそれに必要なI/F関数を実装するケースは多いです。そのような構造にすることはできないでしょうか?

投稿2016/12/24 16:31

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nartoc

2016/12/28 03:35

回答ありがとうございます。 .hと.cppの使い分けはマナーではないとのこと、少し安心しました。 フォームを使った対話式のアプリケーションの場合、処理のほとんどはフォームのコントロールとのやりとりになり、I/F部分だけを切り出してクラスのメンバー関数にするより、すべてをメンバー関数内で処理した方がすっきりする(可読性がよくなる)ような気がします。
Chironian

2016/12/28 12:26

小さなアプリケーションの場合はその通りですね。 大きなアプリの場合、アプリケーション部分が巨大なので、それをGUIの中に埋め込んでしまうのは現実的ではないと思いますよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問