// ( o1.C ) // C++のいんちきオブジェクト−その1 // #include // オブジェクトは生成したル−チンのスコ−プ内での // みアクセスできる。そのル−チン以外でアクセスし class Label { // たい場合は、グロ−バル変数のように宣言しなけれ int i ; // ばならない。 public: Label() {} Label( int p ) { i = p ; } void set_i( int p ) { i = p ; } int get_i() { return i ; } void set_other_i( void* t,int p ) ; // これはおまけです。他のオブジェクト } ; // にメッセ−ジを送るという感じの関数。 void Label::set_other_i( void* t,int p ) { ((Label*)t)->set_i( p ) ; } /* これは出来ない、サブル−チンの中ではオブジェクトを扱えない void sub() { extern Label a ; この extern 宣言が効かない cout << a.get_i() << endl; } */ Label c ; // 方法1:グロ−バルでオブジェクトを宣言する void sub1() { cout << c.get_i() << endl; } Label* d ; // 方法2:メインでオブジェクトを宣言し、そのポインタを使う void sub2() { cout << d->get_i() << endl; } void main( void ) { Label a(3) ; // sub() ; Label b(4) ; b.set_other_i( &a,5 ) ; cout << a.get_i() << endl; // a の値5 c.set_i( 6 ) ; sub1() ; // c の値6 d = &a ; d->set_i( 10 ) ; sub2() ; // a の値10 cout << a.get_i() << endl; // a の値10 }