Heaven's Kitchen

○ ラストスパート

Modern C++ Design―ジェネリック・プログラミングおよびデザイン・パターンを利用するための究極のテンプレート活用術

少し前からModern C++ Designという本(上のやつ)を読んでいます。3章のタイプリストの応用あたりで、つまづき中。

それはそうとして、関数の中でクラスが定義できるというのを始めて知ったので、何に使えるんだろうと模索してみた。

#include <iostream>
using namespace std;

class A {
public:
  void sayHello(){
    cout << "Hello World!" << endl;
  }
  virtual void setValue(int x) = 0;
  virtual ~A() {}
};

A *f()
{
  static int a = 0;

  class B : public A {
  public:
    void setValue(int x){
      a = x;
    }
  };

  cout << a << endl;

  static B b;
  return &b;
}

int main()
{
  f()->setValue(10);
  f()->setValue(100);
  f()->sayHello();
  return 0;
}

関数をオブジェクトのように操作できる…。意味ないですね…。

f()の副作用をなくせば、関数を使って疑似シングルトンみたいなことも…。やっぱり意味ない…。

<< 前の日記 "光の男"(2006-12-16)

>> 次の日記 "シータ"(2006-12-20)

Valid XHTML 1.0! Valid CSS!