• ベストアンサー

C++ Builderでのpublic変数の扱いについて

class TForm1 { ・・・ public: int i;   ・・・ } のように宣言した変数iは他の関数から どのように参照したらいいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

C++ Builder では、TForm1 はちょっと特殊なクラスですから。 さて、「他の関数から」ということですが、どこにある関数かで話は違ってきます。 1.TFrom1 のメンバ関数   これは、TForm1::なんとか() の形をしています。   この関数からは、単に、i で参照できます。 2.TForm1 に関連する unit.cpp の中の関数   Form の実体(TForm1 のインスタンス)は、Form1 というものです。   これを経由して、 From1->i で参照できます。 3.他のファイルの中にある関数から   そのファイルに、 #include "Unit1.h"   を定義します。   この、Unit1.h は、TForm1 を定義しているヘッダファイルの名前になります。   この inculude を定義した上で、Form1->i で参照できます。 いずれにしても、TForm1 の中の Public なメンバ変数は、メインフォームの中で共有される変数になります。 この意味から、i のような単純な名前はあまり好ましくありません。 また、通常であれば、メインフォームの情報を参照する関数は、TForm1 のメンバ関数でであるべきです。そうすれば、参照する変数が Public: である必要はありません。 既に指摘があるように、クラス内にある Public: なメンバ変数は、取扱注意です。

noname#25605
質問者

お礼

ご回答ありがとうございます。 非常に丁寧な回答でわかりやすかったです。

その他の回答 (2)

回答No.2

TForm form; int got_value = form.i; もしくは: TForm* pform = ...; int get_value = pform->i; クラスにpublicなメンバ変数を持たせることは 「決して」お勧めいたしませんが。

noname#25605
質問者

お礼

ご回答ありがとうございます。 参考にさせて頂きます。 >>クラスにpublicなメンバ変数を持たせることは 「決して」お勧めいたしませんが。 注意点も教えていただきありがとうございます。

  • nerosuke
  • ベストアンサー率33% (39/115)
回答No.1

>C++ Builderでのpublic変数の扱いについて ビルダーは関係ないですよ。 C++の文法です。 >他の関数からどのように参照したらいいのでしょうか? メンバ関数の事かな? どの関数?  C++は理解できているのでしょうか? ビルダーがいかにRADツールとは言え、C++の知識が全く無ければ、 使うのはきついですよ。 とはいえ、VC++に比べればまったくもって容易に開発ができますので、 ある程度 C++の知識を得ましょう。

noname#25605
質問者

お礼

ご回答ありがとうございます。 一から勉強しなおします。

関連するQ&A