開発環境: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]に値を代入出来ず困っています。
解決方法を教えていただきたく、宜しくお願い致します。
節子、それ C++ やない C++/CLI や。
C++/CLI は C++ とはまったくの別言語なので .cpp にコードを移すべきではない。
C++/CLI をいくら勉強しても pure C++ の勉強には(あまり)ならないし、
pure C++ をいくら勉強しても C++/CLI の勉強には(あまり)ならない。
あれ?
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ってとこだからねぇ
それにタダだしね
tetrapodさん、hXXoccoさん
ご回答頂き、ありがとうございました。
tetrapodさん
「節子」サーチ発動しました。元ネタは火垂るの墓でしょうか?
鑑賞したことがないので、まともな節子返事が出来なくて申し訳ありませんが、
>節子、それ C++ やない C++/CLI や。
なるほど。節子、了解しました。
>C++/CLI は C++ とはまったくの別言語なので .cpp にコードを移すべきではない。
こちらもなるほどです。了解しました。
ご助言頂き、ありがとうございました。
hXXoccoさん
>で,どうかな?
クラス名称(dentaku::)付加と
txtDisplayー>text =inpNumber.ToString();とすることで
ビルドが通りました。
>あと,C++/CLIを使う強みはなんでもゴチャゴチャでOKってとこだからねぇ
>それにタダだしね
[タダ」に弱かったorz。
C++初心者としては、まずは「C++」から攻めていこうと思います。
ありがとうございました。
> C++/CLI は C++ とはまったくの別言語なので .cpp にコードを移すべきではない。
異議アリ。
C++/CLI は C# とはまったくの別言語なので実装は .cpp に置くのが基本だ。
そうでないと実装に変更が生じるたびにそいつを#includeしているコードに不要なre-compileを強いることになる。
ツイート | ![]() |