サンプルプログラムをコンパイルするとエラーがでる。
Visual C++ 2005 Express Editionを勉強中で、あるWEBサイトで紹介されていたサンプルプログラムhttp://homepage3.nifty.com/ishidate/vcpp05_3/vcpp05_3.htm
を使って、コンボボックスやテキストボックスを配置して以下のコードを入力しました。
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
double a=double::Parse(textBox1->text);
double b=double::Parse(textBox2->text);
int indexNumber=comboBox1->SelectedIndex;
double c;
switch(indexNumber){
case 0:c=a+b;break;
case 1:c=a-b;break;
case 2:c=a*b;break;
case 3:c=a/b;break;
}
label1->text=c.ToString();
}
private:System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e){
comboBox1->SelectedIndex=0;
}
コードを”デバッグなしで実行”で動かそうとすると以下のようなエラーメッセージが出力されました。
>C801.cpp
1>c:\mywork\felicareader_test\c801\c801\Form1.h(138) : error C2248: 'System::Windows::Forms::Control::text' : private メンバ (クラス 'System::Windows::Forms::Control' で宣言されている) にアクセスできません。
1> c:\mywork\felicareader_test\c801\c801\Form1.h(23) : 'System::Windows::Forms::Control::text' の宣言を確認してください。
1> c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : 'System::Windows::Forms::Control' の宣言を確認してください。
1>c:\mywork\felicareader_test\c801\c801\Form1.h(139) : error C2248: 'System::Windows::Forms::Control::text' : private メンバ (クラス 'System::Windows::Forms::Control' で宣言されている) にアクセスできません。
1> c:\mywork\felicareader_test\c801\c801\Form1.h(23) : 'System::Windows::Forms::Control::text' の宣言を確認してください。
1> c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : 'System::Windows::Forms::Control' の宣言を確認してください。
1>c:\mywork\felicareader_test\c801\c801\Form1.h(148) : error C2248: 'System::Windows::Forms::Control::text' : private メンバ (クラス 'System::Windows::Forms::Control' で宣言されている) にアクセスできません。
1> c:\mywork\felicareader_test\c801\c801\Form1.h(23) : 'System::Windows::Forms::Control::text' の宣言を確認してください。
1> c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : 'System::Windows::Forms::Control' の宣言を確認してください。
1>ビルドログは "file://c:\mywork\felicareader_test\C801\C801\Debug\BuildLog.htm" に保存されました。
1>C801 - エラー 3、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
エラーが3つでて、それをダブルクリックしてみると、どうやら、
・double a=double::Parse(textBox1->text);
・double b=double::Parse(textBox2->text);
・label1->text=c.ToString();
この3つの文に問題があるということらしいのですが、原因がよくわかりません。
この原因わかるかたいらっしゃいましたらぜひご教授よろしくお願いいたします。