caseの値に対応する内容をTraitsクラスにして、
GetData(), CheckData()とSetVal()があるクラスを
クラステンプレート(Traitsクラスを引数に取る)にしてしまうのをまず思いついた。