gl5_progのメモ

自分のためのメモとかまとめとか

(ideoneメモ)関数内クラスのスコープ

http://ideone.com/B3XdFk

#include <stdio.h>
 
int main( void )
{
    class A{};
    if ( true )
    {
        class B{};
    }
    {
        class C{};
    }
    A a;
    /* error
    B b;
    C c;
    */
    return 0;
}

関数内クラスについて

  • さらに深いスコープ(if文内など)でも宣言できる
  • そのスコープ外からは見えない

ということがわかった。

[おまけ]switch文内
http://ideone.com/sbGHF9

#include <stdio.h>
 
int main( void )
{
    switch( 0 )
    {
        case 1:
        {
            class A{};
            A a1;
            break;
        }
        case 2:
        {
            /* error
            A a2;
            */
            break;
        }
        case 3:
            /* error
            A a3;
            */
            break;
    }
    switch( 0 )
    {
        case 1:
            class B{};
            B b1;
            break;
        case 2:
            B b2;
            break;
    }
    /* error
    B b3;
    */
    return 0;
}