Effective C++에서 보고 감동 받은 방법…
#include “.\test.h”
#include <iostream>
#include <iterator>
#include <algorithm>
#include <vector>
#include <cassert>
using namespace std;
template<typename T>
class StaticForEachClass
{
private:
static int val;
public:
static void setVal(int v)
{
val = v;
}
static int getVal()
{
return val;
}
};
template<typename T>
int StaticForEachClass<T>::val;
class A: public StaticForEachClass<A>
{
};
class B: public StaticForEachClass<B>
{
};
int main()
{
A::setVal(1);
cout << “A::getVal(): ” << A::getVal() << endl;
B::setVal(2);
cout << “B::getVal(): ” << B::getVal() << endl;
cout << “A::getVal(): ” << A::getVal() << endl;
return 0;
}
실행결과
a.getVal(): 1
b.getVal(): 2
a.getVal(): 1
Press any key to continue
자바나 C#에서 이정도로 elegant하게 이 문제를 해결 하려면 어떻게 해야할까.