• ベストアンサー

::とは何者?

ゲーム制作の初心者です。最近CからC++に移りつつある傾向にあります。 ゲーム制作の本を見るとどの本にもこの「::」が、もう常識のように出てきます。どうやら「スコープ解決演算子」という名前らしいのですが、それ以外は調べても、なかなか手掛かりが見つからずまだ謎のままです。このスコープ解決演算子とはどのような意味でどのような使い方をするのでしょうか? 今後、私と非常に強い絆で結ばれそうな予感がするので教えてください。

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

  • ベストアンサー
  • TAKO184
  • ベストアンサー率50% (2/4)
回答No.5

これからゲーム製作をされると言う事なので、きっとWin32APIを直接触る様になると思います。APIって引数もやたら多いし、毎回同じ様な事を書くのが面倒になってきっとオリジナルのカプセル化に走ると思います。その時::の便利さが解かると思います。 CMyClass::CreateWindow(~) {←APIと同じ名前の自分オリジナルのCreateWindow … ::CreateWindow(~); ←Win32APIのCreateWindow } なんて感じに。 もちろん::を知らなければ、 CMyClass::myCreateWindow(~) { … CreateWindow(~); } とか…逃げる方法はいくらでもあります(私も当初::が理解できずこーしてた^^;)。 後、同じ様に意味が解かると便利な物としてthisとかnew/deleteも私はお勧めです。焦る必要は無いと思います。必ず、フッとした事で理解できる日が来るので… # ただ…理解すると…既存のソースのあちこちを修正したくなる衝動に駆られる^^;…ので早目に理解した方が無駄は無いかも…

nVIDIA
質問者

お礼

ライブラリの関数の引数の数はすごい数です。だから、途中でどれがどの引数か目が回る事もあります(><)だからどうにかならないかなぁとよく思っています。 「::」がそれを解決できるのであれば早期覚えたいです。

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

その他の回答 (4)

  • ddnp009
  • ベストアンサー率25% (15/58)
回答No.4

"スコープ"という用語の意味はお分かりですよね。 グローバルとかローカルとかファイル単位とか。 識別子が色々なオブジェクト(またはnamespace, struct, enum...)間で 重複する際に、どの母体(?)を指すか明示するのに使います。 実例は、お持ちの本の中で山のように出てくるでしょうから割愛

nVIDIA
質問者

お礼

まだCがメインでC++の教科書配布されてないため手元にC++の本は手元にないです。まずはCを理解しなくてはなりませんでしたから。それに一週間後C言語検定ですし。 ご返答ありがとうございました。また何かあったらよろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • inaba502
  • ベストアンサー率23% (22/94)
回答No.3

「::」は「の」と読んだら分かりやすいですよ。 A::x → Aクラス「の」x関数、という感じです。 なかなか慣れないですよね^^; グローバル変数とローカル変数で、同じ名称のものが 使われた場合、Cではローカル変数が優先されてしまっていたんですが C++では、::(グローバル変数名)とすることで グローバルにもアクセスできるようになりました。 -------------------------------------------- int dt = 100; //グローバル変数 void main() { int dt =200,a,d; a = ::dt; // グローバルのdtを代入 b = dt; // ローカルのdtを代入 } }

nVIDIA
質問者

お礼

超わかりやすい解説でした。ちょうどC言語2級検定の勉強で変数同士の衝突の話がありましたので復習にもなりました。※もちろんCでのおはなしです。 まだこの言語に足を踏み入れたばっかりですので今後また聞く事もあるかもしれませんが、その時はよろしくおねがします。 超わかりやすい解説ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

日本語では訳語がばらばらなので、検索しても捕まえにくいかもしれませんね。ちなみに、JIS X3014:2003では、5.1 一次式のところに、「有効範囲解決演算子」という名前で出ています。原語では「scope resolution operator」です。 有効範囲解決演算子は、名前空間有効範囲(大域的名前空間有効範囲を含む)およびクラス有効範囲を特定するために使用します。 具体的には、 int x = 1; struct A { static int x; }; int A::x = 2; namespace B { int x = 3; } int main() {  int x = 4;  std::cout << ::x << std::endl;  std::cout << A::x << std::endl;  std::cout << B::x << std::endl;  std::cout << x << std::endl; } とすれば、 1 2 3 4 という結果になります。 変数だけでなく、関数や型名や列挙定数といった識別子に対しても同様です。

全文を見る
すると、全ての回答が全文表示されます。
  • 6dou_rinne
  • ベストアンサー率25% (1361/5264)
回答No.1

C++の解説書、入門書を見れば必ず解説がありますが。 A::xならクラスAの関数xであり、::xなら関数の外にある関数xで、通常ではアクセスできないこれらの関数にスコープ解決演算子を使うことによりアクセスできるようになるというものです。

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

関連するQ&A

  • オンラインゲームのマクロ制作

    あるオンラインゲームしているのですが、単調な狩りがとても退屈なので、C言語でマクロを作ろうと思っています。(C言語は超初心者です。) そこで、オンラインゲームのマクロ制作で役立つリファレンス本やサイト、ツールなどを教えて頂ければと思います。 よろしくお願いします。

  • ライブラリをつかったらC++じゃなくなるのでは?

    ゲーム制作で制作しやすくするため「ライブラリ」を使いますけど、どこれじゃ「○×ツクール」みたいで、本とのC++の腕が上達しないのではないでしょうか?C++のプログラムじゃなくなるのではなくなっちゃうのではないでしょうか? そしてもし、コンクールとか出品するとしたら他人が作ったように見られるのではないでしょうか?

  • C言語のお勧め本

    ゲームなどを制作するにあたり、C言語のお勧めの 参考書籍や出版社等ありましたら教えてください。 レベルは初心者と考えてくださって結構です。 ただ、私が本格的にプログラムを組むことは、あまり考えられません(^^; プランナやデザイナーの人が読んでおいたら、 プログラマーの方々と密にお話できるものがよいですね、 そんな便利な本ってあります??? とにかく、もっと予備知識をつけておきたいのです。 ちょとしたことでもお待ちしておりまーす、

  • Delphiでキューを作りたい

    Delphi初心者です。ゲームを制作中なのですが、相談に乗って頂けますでしょうか。 プログラムの骨格は、演算→描画の繰り返しなんですが、演算結果を次々と描画ルーチンに渡すと、描画が間に合わなくなったときに破綻してしまいます。 (描画で使っているコンポーネントがクラッシュしてしまう) そこで、演算部で表示させるものを計算しキューに追加していき、CPUのアイドル時間を見つけてはキューから順次取り出して描画、という方法を試したいと思います。 (オーバーフローしたら破棄する) そこで、スタックとかキューを使ったことがないのですが、単純に配列を使って、 1.データを最後尾に加える 2.データを先頭から出し、順次前に詰める 簡単な方法があったら教えて頂きたいと思います。 (それくらい手動でやれと言われそうですね(^_^;) よろしくお願いいたします。

  • cwchar内でエラーが起きます。

    C++を勉強しているのですが、コンパイルをすると、 識別子が必要です cwchar C2059 構文エラー: '::' cwchar C2589 'unsigned': スコープ解決演算子 (::) の右側にあるトークンは使えません。 cwchar と、cwchar.h内でエラーが起きてしまいます。コードを絞っていって、最終的に以下のコードでもエラーが起きていました。 #include <iostream> using namespace std; int main(){     cout << "HelloWorld." << endl;     return 0; } なぜでしょうか?改善方法を教えていただけると嬉しいです。 環境はVisualStudioCommunity2015 windows10 です。

  • 3Dゲームの参考書を買おうとおもっているのですが

    タイトルとおり… 3Dゲームの作り方が詳しく書いてある本を探しています。 ちなみに3Dゲームは初心者に近いです。てか初心者^^; C++で作りたいと思っています(c++は勉強済み) パソコンはWindows7です よろしくおねがいします

  • ゲーム中にエラー

    C++でのゲームプログラミングについての本を読んでいるんですが記載されているソースを打ち込みコンパイルし実行するとゲーム途中で「Abnormal program termination」というエラーが出てしまいます。何が原因なんでしょうか?またどうしたら解決できるのでしょうか? 本は「C++わくわくゲームプログラミング教室」という本です。

  • プログラミングC#が難しくて困っています。

    プログラミングをしたいと思い、独習C#を使ってプログラミングの勉強中です。 プログラミングは全くの初心者です。 他の入門書でもそうなのかもしれませんが、論理演算子やビット演算子、配列などの内容が書かれていますが、これらが一体何の役に立つのか分からなくて困っています。 読んでいても理解できないです。 本にケチを付けているわけではないです。 おそらく私にプログラミングのセンスがないんだと思います。 また、この本では、コンソールアプリケーションの説明が多いのですが、私はウェブアプリケーションに関心があります。 基礎だと思って読み進めるべきでしょうか? サンプルプログラムも地道に本の真似をして自分で打っていったほうがいいのでしょうか? わからないことがあってGoogleで調べても、理解できないです。 本当に、プログラミングが難しいです。 独習C#のような本は、全て理解する必要があるのでしょうか? 質問が多くなって申し訳ありません。

  • 「VisualBasic」と「JavaScript」の違いを尋ねたい

    興味がてら急がず焦らずでファミコンレベルのアクションゲーム (スーパーマリオやロックマンや魔界村など)を作る為に プログラムを勉強しようと思っています。 ここ数日自分で色々調べてみたところ どうやら、自分みたいな初心者は「VisualBasic」で やって行くことした方がいいかなと思いました。 「VisualBasic」は初心者からも入り易く、使いこなせば どんなゲームも制作出来る言語だそうで。 ただ自分には将来 同人ソフト、フリーソフトなりで 作ったゲームを世に出してみたい気持ちもあります、、 そこで質問させて頂きたいのですが 作ったプログラム言語によって、 そのゲームの動作環境(対応機種)というのは 完全に固定されてしまうのでしょうか? 例えば、同人、商業問わず winでゲームを開発、動作出来る話は「常識」になってるくらい目につきますが、 でも、C言語やC++はMacの環境でも使えるはずなのに、 なぜmacで動くゲームが世の中に少ないのでしょうか? 「VC++」はwin専用で、それが浸透してるからでしょうか? だとすると、C++で作り、WinMac両方に対応させた方が良いとも思うんですけど、、 「VisualBasic」で制作したゲームもwinしか遊べないんでしょうか? 自分としてはFlashゲームのように win、mac分け隔て無くプレイ出来るゲームを作りたい気持ちがあります。 ちなみにそのJavaScriptで組んだゲームは Wii本体からネット経由するとWiiでも遊べるみたいですね。 それこそすごく興味あるんですが、Java言語だと スーファミレベルのゲーム制作は無理ですよね? 簡単なゲームしか見た事無いんで、、、。 とりあえずネットだけで無く、リアルの友人達にも 容易にプレイしてもらえるゲーム開発言語を選びたいんです。 「VisualBasic」で大丈夫でしょうか? 「JavaScript」のが良いでしょうか? また、もしかしたらその先C++を学ぼうとした時 「VisualBasic」「JavaScript」のプログラムで学んだことは 生きてきますか? それともプログラムはまったく変わってしまうのでしょうか? 「最初からこっちを選んでおくべきだった」という 後悔だけはしたく無く、今すごく悩んでおります。 とりあえず、ごちゃごちゃ書いてしまったんで 自分の要望と質問をまとめます。 ●初心者におすすめ。 ●制作環境はMacでもwin行けます(BootCamp環境なので)。 ●未来永劫に2D(ドット)のゲームしか作る気が無い。  (しかもどこまで凝ってもスーファミレベルで満足) ●音楽が大好きなのでサウンド周りもしっかり対応出来る言語が良い。 ●最終的にはwin以外でも遊べるゲームを作りたい。 (友達みんながみんなWin持ってるわけじゃ無いので) ●欲が出て、難関C++に移行したくなった時に  少しでも活かせられる言語が良い。 以上のような自分にとって、 それぞれ「Java」と「VisualBasic」を選ぶ上での メリット、デメリットを聞かせてください。 自分は「JavaScript」の「Action Script」に魅力を感じています。 ですが、「VisualBasic」の方がゲーム制作には特化してて、 またこちらの言語のが多様性があるかな、と。 んー、悩みます。無知だからこそ、さらに。 ぜひアドバイスよろしくお願いします。

  • CやJava等の言語の具体的なソフトウェアの作り方

    こんばんは。 現在独学でJavaを勉強中なのですが、どの本も言語の仕様を学ぶだけで終わってしまいます。 PHPやJavaScriptは既にある程度は習得しており、プログラムの基礎は出来ていると思いますので、実際にソフトウェアを制作しながら学んでいきたいのです。 CやJavaで具体的なソフトウェア(例えば時計とかランチャーとかゲームの様なWindowsアプリ)を制作しながら学べるような本はありますか? それに準ずるような内容の本や、また他の言語のそういった本も教えていただけると嬉しいです。 よろしくお願いします。

土地の売却による税金
このQ&Aのポイント
  • 土地を売却すると、翌年には「譲渡所得税」と「住民税」が課税されます。
  • 健康保険税は売却によって高くなることはありません。
  • 譲渡所得税と住民税は売却の翌年のみかかります。
回答を見る