• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:グローバル変数について)

グローバル変数について

このQ&Aのポイント
  • Visual c++ 2008 Express Editionでのグローバル変数と静的変数の扱いについて説明します。
  • グローバル変数や静的変数を参照したネイティブ型のメンバの宣言ができない場合、代替の方法を探す必要があります。
  • 関数内でのグローバル変数の使用方法についても検討する必要があります。

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

  • ベストアンサー
  • wathavy
  • ベストアンサー率22% (505/2263)
回答No.1

Form1のようなクラスの内部で、変数を持ってください。 初期化のときに、右辺を使って変数を確保します。 Form1クラスの中でなら、あたかもグローバルであるかのうように振舞っています。このクラス宣言の外で変数を書くと、 グローバル変数、静的変数、または gc ヒープのオブジェクトを参照しているネイティブ型のメンバを宣言することはできません とエラーが出ます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • C++/CLIでのDataGridViewの使い方

    以前に質問させていただいたのですが、要点を得ていなかったため再度質問させていただいきます。 VC++2005のC++/CLIでプログラムを作成しています。 CSVファイルから内容を読み込み、DataGridVeiwに表示させたいと考えています。 CSVファイルを配列に読み込んで、表示するところまでは出来ています。 以下CSVファイルを読み込んで、コンソール出力するプログラムの一部 int i; StreamReader^ sr=gcnew StreamReader("hoge.csv"); String^ text=sr->ReadToEnd(); array<String^>^ line=text->Split(gcnew array<String^> {"\r\n", "\r", "\n"},StringSplitOptions::RemoveEmptyEntries); array<array<String^>^>^ table= gcnew array<array<String^>^>(line->Length); for (i=0; i<line->Length; i++) { table[i]=line[i]->Split(','); } for each (array<String^>^ output in table){ for(i=0; i<output->Length; i++){ Console::Write(output[i]); //行出力 } } 初歩的なことだとは思うのですが・・・ コンソール出力部分をDataGridViewで出力表示させるには どのように書けばいいでしょうか。 よろしくお願いします。

  • setTimeoutメソッドでローカル変数を渡したい

    setTimeoutメソッドでローカル変数を渡したい 表題の件につきましてご教授をお願いします。 やりたい事は 【1秒ごとにある関数(引数が必要)を走らせて一定回数後に停止する】 なのですが、setTimeoutで引数が渡せずに困っています。 (引数は固定ではないのでローカルの変数を使用したです。) あるWEBページで下記の方法で引数が渡るとありましたが、当方の環境ではエラーが発生します。 function test1(){ var the_string = "hello"; the_timeout = setTimeout("alert(" + the_string + ");",1000); } イメージとしては下記のようにIDとcntを渡し、受け取った関数で引数を処理、 その後再帰的に同一関数に引数を送る、です。 function timeA(timeIDA,cntA){ timeID = timeIDA; cnt = cntA; alert(cnt); cnt++; clearTimeout(timeID); timeID = setTimeout("timeA(timeID,cnt)",1000); } 動作環境はWIN IE5.0以上、NC4.75以上を考えています。 何か良い解決方法がありましたら、教えてください。 よろしくお願いします。 #もっと露骨にwaitに相当するメソッドがあると嬉しいのですがr(^^;

  • [C++/CLI]マネージコードで配列を作成してネイティブコードの配列にコピーしたい

    Visual C++ 2005のC++/CLIでプログラム作成しています。 C言語で書かれたプログラムを組み込みたい為に、 マネージコードでテキストファイル読み込みをして、2次元配列に格納し、 int型に変換してネイティブコードの配列にコピーしたいのですが、上手く書けません。。 テキスト内容は数字のみで2次元に並んでおり、1文字ずつ配列に入れたいです。 エラー出ているのですが、下記にコードを載せます。 #include<string> #include<vcclr.h> using namespace System; using namespace System::IO; int main(void){ //ファイルオープン StreamReader^ sr = gcnew StreamReader("hoge.txt"); int x, y; //ファイルの内容読込み for(y=0;;y++){ String^ line = sr->ReadLine();   //データ末尾まで読み込んだらループ終了 if(line == nullptr) break;    array<array<String^>^>^ table = gcnew array<array<String^>^>(line->Length);    int X=line->Length;    int Y=table->Length; //読み込んだ内容を表示 Console::WriteLine("<System::String表示>" + table);    //System::Stringのline内容(文字列)をコピーする変数   char tmp[128];   sprintf(tmp,"%s",line);   printf_s("<char配列> tmp=%s\n",tmp); //char*変数の内容表示   array<array<int>^>^ data= gcnew array<array<int>^>(Y,X); //int型に変換 for(x=0;x<X;x++){data[y][x]=atoi(table[y][x]);} } //ファイルのクローズ sr->Close();      return 0; } 汚く読みづらいコードで大変申し訳ありません。。 元はdefineで成分数(X,Y)を宣言していました。 しかし、読み込むファイル内容によって変えたく、arrayでLengthを使いました。 またこれ以外でいい方法がございましたら、どうか教えてください。 どなたか、ご教授よろしくお願いします。

  • 複数のダイナミックテキストに1000桁ごとのカンマの打ち方

    先日、1000桁ごとのカンマの入れ方を教えていただき、上手くいったのですが、複数のテキストボックスにカンマを打ちたいと思い、Array を使ったのですがうまくいきません。根本的に何かが違うのだと思いますが、何処が違うのか教えていただきたく投稿しました。 どうぞよろしく御願いします。 on (press) { 計算式が入っています my_array[1] = new Array( ninendrieki , sannendrieki , gonendrieki , yonendrieki ) my_array[2] = new Array( _root.gonendriekiQ.text , _root.yonendriekiQ.text , _root.ninendriekiQ.text , _root.sannendriekiQ.text ) org = new String( my_array[1] ) temp = new String( "" ); cnt = 0; for( i = org.length - 1 ; i >= 0 ; i-- , cnt++ ) { temp += org.charAt( i ); if( cnt % 3 == 2 ) { temp += ","; } } if( temp.charAt( temp.length - 1 ) == "," ) { start_index = temp.length - 2; } else{ start_index = temp.length - 1; } my_array[2] = ""; for( i = start_index; i >= 0 ; i-- ) { my_array[2] += temp.charAt( i ); } }

    • ベストアンサー
    • Flash
  • new int[変数]で確保しても良いんですか?

    Javaでの配列の確保の方法です。 int size = 100; int[] array = new int[size]; のような確保の方法はどの環境・コンパイラでも思い通りの動作をしてくれますか? C言語では、このような書き方で確保することはできなかったので、Javaでは可能なのか心配で質問しました。 「動的」という意味がまだ完全にわかっていないのですが、上記のような変数の確保は、動的とはいえないのですか?sizeの値をユーザーから受け取れば、確保する大きさはいつも違うようになると思うのですが・・・。 ちなみに下記のようなプログラムで配列の確保を使おうとしています。 static int[] toIntArray(String[] strs){   int[] array = new int[strs.length]; // ←ここで 確保しています。   for(int i = 0; i < strs.length; i++){    array[i] = Integer.valueOf(strs[i]).intValue();   }   return array; } 上記のプログラムはStringの配列からintの配列に変換することを目的にしています。

    • ベストアンサー
    • Java
  • プリぺアドステートメントで変数が認識されない

    趣味でHPを作ろうとPHPを始めました。 初歩的な質問で恐縮なのですがどなたかご協力頂けないでしょうか? 多少省略していますが現在作成中のスクリプトは以下の通りです。 $sql="SELECT * FROM property WHERE price BETWEEN ? AND ? AND citycd=?"; $stmt = $db->prepare($sql); $stmt->execute(array($price1,$price2,$citycd1)); $rows=$stmt->fetchAll(PDO::FETCH_ASSOC); foreach($rows as $r){ echo .$r['plan'].; } 上記のなかでarrayの中の変数が変数として認識されません。 変数は$_POSTで受け取っているものなのですが、受け取りの成功は確認済です。 また、変数の代わりに数字を直で入れれば動くので、やはり変数の書き方に問題があるかと思います。 変数のセットの仕方は { } や '..' など色々あると思います。 マニュアルでそのあたりを調べて何パターンか試してみたのですがうまくいきません。 http://php.net/manual/ja/language.types.string.php 恥ずかしい質問ですがよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • Excelで最大値を与える説明変数求める方法

    ソルバーを使うと結構な確率でエラーになります。 共役傾斜法とか準ニュートン法ってのが「最初にどこからスタートするか」に依存するからのような気がするのですが、そこで、 (1)適当に正規分布に従う乱数を100個発生させる。 (2)その乱数を説明変数にして目的変数を得る。これを100回繰り返す。 (3)100個の目的変数が得られたら、そのうち目的変数の値が大きい方から上位50個についての説明変数の標準偏差を求める(下位50個は捨てる) (4)上位50個の目的変数のうちでも最大値を与える説明変数1つを選らんで平均値とし、(3)で求めた上位50個の標準偏差を標準偏差として、この2つのパラメータにて正規分布に従う乱数を50個出す。 (5)先ほど(3)で使った上位50個の説明変数(下位50個は捨てる)と(4)の50個説明変数の計100個より100個の目的変数を得る (6)以後(3)~(5)を何度も何度も繰り返す。そのうちに上位50個の標準偏差がだんだん小さくなってくる。ある程度小さくなったところで、そのときの説明変数を「目的変数を最大にする説明変数」とする。 というVBAのマクロを組んでみたところ、時間はかなりかかるするものの(と言っても等間隔の目的変数をしらみつぶしにする方法よりははるかに速い)、エラーになりにくい(もちろん関数が収束するなら)し、結果を念のためソルバーに入れてやるとほぼそこから答えが動かない、と、結構いいような気がするのですが、悲しいことに基礎的な素養が無いからこれが数理的に正しいことなのかわかりません。 感覚的には正しい気がするのですが、いかがなものでしょうか。

  • array_mapの再帰処理がうまく行かない

    長文で失礼します。 array_mapでの再帰処理がうまく行かないのでどこが間違っているか教えてください。 まず、このような配列があります。配列の中に配列があります。 $ary = array(1, 2, null, array("a", null, "c")); この配列の中のnullを"なし"という文字列に変換したいです。 array_mapを使って再帰的にやってみました。 まずはうまく行ったコードから。 ------------------------------------------------------ $ary = array(1, 2, null, array("a", null, "c")); var_dump(null2Nashi($ary)); // nullを"なし"に置換する関数 function null2Nashi(  $in_array ){  if(is_array($in_array)){   return array_map("null2Nashi", $in_array);  } else {   if ($in_array === null){    $in_array = "なし";   }   return $in_array;  } } ------------------------------------------------------ 結果はnullが"なし"に変換されました array (size=4)  0 => int 1  1 => int 2  2 => string 'なし' (length=6)  3 =>   array (size=3)    0 => string 'a' (length=1)    1 => string 'なし' (length=6)    2 => string 'c' (length=1) そしてこの"なし"をコード内で指定するのではなく引数で指定したいと思って無名関数を使って以下のコードにしました。 ------------------------------------------------------ $ary = array(1, 2, null, array("a", null, "c")); var_dump(null2Str($ary, "なし")); // nullを指定文字列に置換する関数 function null2Str(  $in_array, // null値を含む配列  $in_str // null値を変換したい文字列 ){  $n = function($n_array) use($in_str){   if(is_array($n_array)){    return array_map($n, $n_array); //…(1)   } else {    if ($n_array === null){     $n_array = $in_str;    }    return $n_array;   }  };  return $n($in_array); } ------------------------------------------------------ 結果はnullは何も変換されませんでした。 array (size=4)  0 => int 1  1 => int 2  2 => null  3 =>   array (size=3)    0 => string 'a' (length=1)    1 => null    2 => string 'c' (length=1) どうやら(1)のarray_mapが動作していないようです。要素を分解せずに$nの無名関数に渡さずにそのまま第2引数を返しているだけみたいです。 何か対応方法があるでしょうか? どうぞよろしくお願い致します。

    • ベストアンサー
    • PHP
  • 【as3.0】for~文で変数に連番を適用したい

    初めてAS3.0を使用してゲームを作成しています。 5枚のムービークリップの位置をシャッフルしたいのですが、 シャッフルさせるイベントをそれぞれのムービークリップに適用させることが出来ずに困っています。 以下、現在のスクリプトです。 import flash.events.Event; var mixarrayX:Array = [0,60,120,150,200];//x位置のパターン var mixarrayY:Array = [0,20,50,80,90];//y位置のパターン this.addEventListener(Event.EXIT_FRAME,syaful); function syaful(e:Event):void { //ランダムで位置のパターンを抜き出す var syafulPTX1:int = (Math.random() * mixarrayX.length); var syafulPTY1:int = (Math.random() * mixarrayY.length); //カードの位置【x,y】を当てはめる var mix1:Array = [mixarrayX[syafulPTX1], mixarrayY[syafulPTY1]];   //MC1に抜き出した位置を適用させる MC1.x = mix1[0]; MC1.y = mix1[1]; //今回のパターンを配列から抜き出す。 syafulPTX1 = mixarrayX.shift(); syafulPTY1 = mixarrayY.shift(); } removeEventListener(Event.EXIT_FRAME,syaful); } for文を使って各変数の「1」等のナンバーにiを適用させて、ループさせれば良いとは思うのですが、 ["MC"+i]等と入力してもエラーになってしまいます。 for文で変数を宣言する場合の正しい書き方を教えていただけると助かります。 何卒、よろしくお願い致します。

    • ベストアンサー
    • Flash
  • php 変数の表示方法について

    phpに関してご質問させて頂きます。宜しくお願い致します。 

CMS joomlaのモジュール、mod_articles_categoryのテンプレート(php)に、

 <?php $array_var = get_defined_vars() ;
var_dump( $array_var ) ;?>

を記述して、変数を表示させると以下が出力されます。 

array(21) { ["module"]=> object(stdClass)#237 (11) { ["id"]=> string(3) "151" ["title"]=> string(52) "写楽保介_ホアカバリキルマ" ["module"]=> string(21) "mod_articles_category" ["position"]=> string(10) "position-7" ["content"]=> string(0) "" ["showtitle"]=> string(1) "0" ["params"]=> string(933) "{"mode":"normal","show_on_article_page":"1","show_front":"show","count":"5","category_filtering_type":"1","catid":["8"],"show_child_category_articles":"1","levels":"1","author_filtering_type":"1","created_by":[""],"author_alias_filtering_type":"1","created_by_alias":[""],"excluded_articles":"","date_filtering":"off","date_field":"a.created","start_date_range":"","end_date_range":"","relative_date":"30","article_ordering":"a.id","article_ordering_direction":"DESC","article_grouping":"none","article_grouping_direction":"ksort","month_year_format":"F Y","item_heading":"4","link_titles":"1","show_date":"0","show_date_field":"created","show_date_format":"Y-m-d H:i:s","show_category":"0","show_hits":"0","show_author":"0","show_introtext":"0","introtext_limit":"100","show_readmore":"0","show_readmore_title":"1","readmore_limit":"15","layout":"_:cus-jibanInfo01","moduleclass_sfx":"jibanInfo01","owncache":"1","cache_time":"900"}" ["menuid"]=> string(1) "0" ["user"]=> int(0) ["name"]=> string(17) "articles_category" ["style"]=> NULL } ["attribs"]=> array(3) { ["name"]=> string(10) "position-7" ["style"]=> string(12) "beezDivision" ["headerLevel"]=> string(1) "3" } …(以下省略

) この変数の中の"写楽保介_ホアカバリキルマ"をテンプレート内に表示したいのですが、どのような記述で出力されるか分からなくて困っております。 

<?php echo $module["ホアカバリキルマ"][ホニャララ] ; ?>など、 いろいろやってみたのですが、どれもうまくいきません。 
詳しい方、どうかご教示頂ければと存じます!

    • ベストアンサー
    • PHP