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を使えばいいんでしょうけど