templateの解説

Functorの前にtemplateを覚えよう(^^;;

http://wisdom.sakura.ne.jp/programming/cpp/cpp33.html

#include <iostream>
using namespace std;

template <class X> void println(X out) {
	cout << out << '\n';
}

void println(float out) {
	cout << 'F' << out << '\n';
}

int main() {
	println("Kitty on your lap");
	println(56.025f);
	println(100.01);

	return 0;
}
もっとも、データ型によって処理が異なる関数の生成は
テンプレートではなくて関数のオーバーロードが専門分野です
テンプレートの中のある特定のデータ型でのみ処理が異なるという場合に用います

なるほど。判った気がする。型が違うと処理も違うなら個別のどうせコードを書かないと行けないけど
型が違うだけでやってることが同じなら
一つのコードで使いまわしたい。
そのためにテンプレートでオーバーロードするわけか。
さっそく、特徴を一つtemplate化してみよう

template <typename T>
void Shogi::element(T W,short&SCORE,float F,int KING)
{
	SCORE+=(W[KING][要素]+=F);
}

呼ぶときは
	element(www2,dummy,f,eou2);//学習用
	element(w2,score,0,eou2);//評価用

こんな感じでいいようです。
ただ、w2もww2はグローバル変数なので引数でわざわざアドレスを渡すのは無駄。
やはりこれは#defineのマクロ定義のほうがいいかも……eou2も引数渡しする必要ないし
Functorを使えばいいんでしょうけど