December 18, 2006
少し前から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()の副作用をなくせば、関数を使って疑似シングルトンみたいなことも…。やっぱり意味ない…。

