.hの処理を.cppに移すには?

解決


きねづか  2011-05-20 14:09:52  No: 72632  IP: 192.*.*.*

開発環境:WindowsXP、Visual C++ 2008 Express Edition
C言語経験者です(C++初心者)。

電卓(dentaku.h、dentaku.cpp)を作成しています。
デザイン画面にボタンを貼り付けクリックイベントに処理を入れ
四則演算だけですが、ビルド・デバッグ開始出来るところまで作成しました。

デザイン画面で作成しているとdentaku.hにコードが自動追加されてしまいます。違和感もあり、.hに記載するスタイルでは将来多重定義にも悩まされそうと思いdentaku.cppにコードを写そうとしています。

まずは試しに数字の「0」ボタンの処理だけを移してみようと思い、
.hの内容は下記のように定義だけ残して

private:

#pragma region Windows Form Designer generated code
〜コンポーネントの初期化処理〜
#pragma endregion
private: System::Void btnZero_Click(System::Object^  sender, System::EventArgs^  e);

.cppの内容を下記のようにしてみたところ
#include "StdAfx.h"
#include "dentaku.h"

namespace possystem{
     System::Void btnZero_Click(System::Object^  sender, System::EventArgs^  e) {
   inpNumber=10*inpNumber;
   inpNumber=inpNumber+0;
   dentaku::txtDisplay.text = inpNumber.ToString();
}

dentaku::txtDisplay.text = inpNumber.ToString();の行でエラーメッセージ:
error C2228: '.text' の左側はクラス、構造体、共用体でなければなりません
となり、
dentaku::txtDisplay->text = inpNumber.ToString();としてもエラーメッセージ:
error C2227: '->text' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。
となり、テキストボックスのプロパティ[Text]に値を代入出来ず困っています。
解決方法を教えていただきたく、宜しくお願い致します。

編集 削除
tetrapod  2011-05-20 15:28:18  No: 72633  IP: 192.*.*.*

節子、それ C++ やない C++/CLI や。

C++/CLI は C++ とはまったくの別言語なので .cpp にコードを移すべきではない。
C++/CLI をいくら勉強しても pure C++ の勉強には(あまり)ならないし、
pure C++ をいくら勉強しても C++/CLI の勉強には(あまり)ならない。

編集 削除
hXXocco  2011-05-20 15:38:47  No: 72634  IP: 192.*.*.*

あれ?
System::Void btnZero_Click(System::Object^ sender,System::EventArgs^ e)だと誰のメソッド?が抜けてるよね
Cの関数っぽくなっちゃうね
誰のかわからないメソッド(スタティック的な関数)の中で誰かのメンバ変数をいじろうとしてるけど。。。

System::Void クラス名称::btnZero_Click(System::Object^ sender,System::EventArgs^ e)
{
    inpNumber       =10*inpNumber;
    inpNumber       =inpNumber+0;
    txtDisplay.text =inpNumber.ToString();
}
で,どうかな?

あと,C++/CLIを使う強みはなんでもゴチャゴチャでOKってとこだからねぇ
それにタダだしね

編集 削除
きねづか  2011-05-20 17:33:55  No: 72635  IP: 192.*.*.*

tetrapodさん、hXXoccoさん
ご回答頂き、ありがとうございました。

tetrapodさん
「節子」サーチ発動しました。元ネタは火垂るの墓でしょうか?
鑑賞したことがないので、まともな節子返事が出来なくて申し訳ありませんが、
>節子、それ C++ やない C++/CLI や。
なるほど。節子、了解しました。

>C++/CLI は C++ とはまったくの別言語なので .cpp にコードを移すべきではない。
こちらもなるほどです。了解しました。
ご助言頂き、ありがとうございました。


hXXoccoさん
>で,どうかな?
クラス名称(dentaku::)付加と
txtDisplayー>text =inpNumber.ToString();とすることで
ビルドが通りました。

>あと,C++/CLIを使う強みはなんでもゴチャゴチャでOKってとこだからねぇ
>それにタダだしね
[タダ」に弱かったorz。
C++初心者としては、まずは「C++」から攻めていこうと思います。
ありがとうございました。

編集 削除
επιστημη  URL  2011-05-21 00:56:55  No: 72636  IP: 192.*.*.*

> C++/CLI は C++ とはまったくの別言語なので .cpp にコードを移すべきではない。

異議アリ。
C++/CLI は C# とはまったくの別言語なので実装は .cpp に置くのが基本だ。
そうでないと実装に変更が生じるたびにそいつを#includeしているコードに不要なre-compileを強いることになる。

編集 削除