• ベストアンサー

VisualC++で、変数を他のメソッドで利用するにはどうしたらいいですか?

今、VisualC++(CLR)で、アプリケーションを使っているのですが、 あるメソッドで作ったString型の変数を ほかのメソッドで利用するにはどうしたらいいですか? intならグローバル変数でいけるのですが、 String^ 型なのでできないようです。 グローバル以外に利用する方法があれば教えてください お願いします

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

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

 こんばんは。使える筈です。  System::String^のメンバ変数を用意しておき、其れを他のメソッドから使用すれば良いのではないでしょうか。  ただし、アクセスする以前で、変数に有効なハンドルが入っているかどうかnullptrの確認しないといけません。  しかし、変数をプロパティに通して操作すれば、nullptrの確認が必要なくなります。以下参考程度に。 //メンバ変数 private: System::String^ stringName; private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { //行き成り触っても大丈夫 this->sName->Length; this->sName = gcnew System::String("hello"); } private: System::Void OtherMethod() { this->sName->Length; } private: property System::String^ sName { private: System::Void set(System::String^ sNewName) { this->stringName = sNewName; } private: System::String^ get() { //何も無ければ何かしら作成して返す if(this->stringName == nullptr) this->stringName = gcnew System::String("Empty"); return this->stringName; } }; };  強引ですが、Tagメンバを利用する手もあります。 private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { //行き成り触っても大丈夫 this->sName->Length; this->sName = gcnew System::String("hello"); } private: System::Void OtherMethod() { this->sName->Length; } private: property System::String^ sName { private: System::Void set(System::String^ sNewName) { this->Tag = sNewName; } private: System::String^ get() { //何も無ければ何かしら作成して返す if(this->Tag == nullptr) this->Tag = gcnew System::String("Empty"); return dynamic_cast<System::String^>(this->Tag); } };

aduken
質問者

お礼

メンバ関数を用意すればよかったのですね! わかりましたありがとうございます!

その他の回答 (3)

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.4

メソッドというか、「メンバ関数」内で宣言したローカル変数のスコープはそのメンバ関数内だけです。 ですからメンバ変数にするしかないと思いますが。 ※メンバ変数とグローバル変数は別物です 「別クラス」という話ならAccessor・Modifierに走るところですが、本件そういう話ではないですよね?

  • Tasuke22
  • ベストアンサー率33% (1799/5383)
回答No.2

メソッド、メンバ関数、つまりクラス内の関数では ないのですか? インクルードファイルをどう利用するかは様々だけど・・・

  • Tasuke22
  • ベストアンサー率33% (1799/5383)
回答No.1

同じクラスならメンバ変数でいいのではないですか? グローバル変数を無くすのもクラスの効果の一つです。

aduken
質問者

補足

クラスではなく Form1.hなどのメソッドに記述した変数を Form1.h内のほかのメソッドでは使えることは出来ますか? という意味です。すみません、説明不足でした

関連するQ&A