忍者ブログ

神戸電子専門学校ゲームソフト学科の生徒が運営するGESのブログです。

   

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

C++小ネタ話 --- グローバルスコープ ---

8月ももう終わるなと感じる今日この頃皆さんいかがお過ごしでしょうか。
立派な人間になりたい人です。
 
明日使える・・・かは解らないC++の小ネタを紹介しようと思います。
知識として頭の片隅にでも置いといてもらえればと思います。(知ってたらゴメンナサイ)
 
今回はグローバルスコープについてやろうと思います。
※私はグローバルスコープと呼んでいますが正確な呼び方があるかもしれないです。
簡単に言うとグローバル領域にある関数等に明示的にアクセスする記述方法です。
 
使用する場面としてはクラス内や名前空間内のある条件が一致した時だけという限られた場面です。
「それでも私は一向に構わん!」
という方はどうぞ

拍手[0回]


[Main.cpp]
#include <stdio.h>
 
class C0 {
public:
    void Show(){ printf( "Test\n" ); }
private:
    void printf( char* _lpStr ){}
};
 
int main()
{
    C0 c0;
    c0.Show();
    return 0;
}
[EOF]
 
コンソールにTestと表示させるつもりで書いたが実行すると何も表示されません。
それはC0::Show関数の中のprintfはC0::printf関数を呼んでおり、
呼んで欲しい関数が違うからです。
 
これを治す方法の一つとしてグローバルスコープを使用する方法があります。
グローバルスコープを表すにはスコープ解決演算子(::)を使用します。
今回はグローバルにある(C0クラスではない)printf関数を呼びたいのでC0::Show関数の中を
 
::printf( "Test\n" );
 
の様に書き換えるとグローバルにあるprintfが呼ばれ、想像通りに動くようになります。
 
 
 
グローバルスコープについては以上です。有り難う御座いました。
PR

COMMENT

NAME
TITLE
MAIL(非公開)
URL
EMOJI
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
COMMENT
PASS(コメント編集に必須です)
SECRET
管理人のみ閲覧できます

No Title

  • by 3年
  • 2012/08/24(Fri)23:50
  • Edit
この記事とは関係ない質問で申し訳ないけど、
3年の先生が実施してくれる補修って来週のいつだったか分かります?

ブログ内検索

最新コメント

[01/29 人面犬]
[10/01 8ch]
[09/12 uncle]
[09/10 某卒業生]
[06/07 uncle]

カレンダー

10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

テスト

Copyright ©  -- GESブログ --  All Rights Reserved
Design by CriCri / Photo by Geralt / powered by NINJA TOOLS / 忍者ブログ / [PR]