![]() |
足し算だけができる簡単な電卓を作ってみましょう。
エディットに適当な数を入力して | ![]() |
||||||||
「+」ボタンを押すと画面には現れない場所 (変数) に値が保存され、エディットは空欄になり、 | ![]() |
||||||||
その後、エディットに別な数を入力して「=」ボタンを押すと | ![]() |
||||||||
和が求まる、というプログラムです。 | ![]() |
||||||||
まずは、フォームにコンポーネントを配置しましょう。 |
|
このプログラムでは、整数型変数 PrevNumber を用意して、「+」ボタンが押されたらそこに値を格納するようにします (下のプログラムを参照)。
まず、「+」ボタンのイベントハンドラを書きましょう。
![]() |
次に、「=」ボタンのイベントハンドラを書きましょう。
![]() |
実行してみましょう。 すると…
「未定義の識別子 : 'PrevNumber'」というエラーが出ましたね。これは、「'PrevNumber' という変数 (か何か) を使いたいのだろうけど、そんなものは知らないよ」というエラーです。このエラーをダブルクリックすると、
エラーが発生した行が茶色で、エラーが発生した場所 (C++Builder が解釈できなくなった場所) が水色で示されます。
PrevNumber は宣言したはずなのに、未定義エラーが出たのはなぜでしょうか?
実は、C++Builder(C++ 言語) には、「モジュールの中で用意された変数は、そのモジュールの中だけで有効である」という決まりがあります。具体的に示すと次のようになります。
グローバル変数 C++Builderでは、「private:」と書かれ手いる部分の下に、使いたい変数を宣言します。
また、これで先ほどの変数はいらなくなりました。下線部を削除してください。
実行してみましょう。 今度はちゃんと動作するはずです。 このようにどフォームに対応したユニット内のすべてのモジュール(関数)から使用できる変数を、『プライベート変数』と呼びます。C++Builderではプライベート変数が一般的な変数の宣言の仕方になります。一方、モジュールの中で宣言された変数は『ローカル変数』 と呼ばれます。変数の有効範囲をスコープと言います。 C++Builderのグローバル変数 〜extern部での宣言〜 ヘッダファイルの外側の「class 何々{〜};」の外側でexternを付けて(付けなくてもいい場合もある)変数を宣言すると、プロジェクト内のどこからでも使うことができるグローバルな変数になります。 ![]() 〜パブリック変数〜 プライベート変数ではなく、他のフォームからも使ってもらいたい変数は、同じくヘッダファイルの中の「public:」のもとで宣言します。 ![]() この変数は、フォームのプロパティのように、他のフォームから「Form1->a = 10;」などと参照することができます。 |
![]() |