2
我在頭文件中使用模板。我使用的函數是遞歸的,我想保留函數外的兩個變量進行比較。這裏是我的代碼(注意:不能編譯):C++頭文件模板
#include "Position.h"
#ifndef _SOLVER_H
#define _SOLVER_H
class Solver{
public:
template<typename T>
int EvaluatePosition(T &p, bool me) {
int score = 0;
if(p.isGameOver()) {
return p.score(me);
}
else {
std::vector<T> nextMoves = p.getNextPositions();
for(int i=0; i != nextMoves.size(); i++) {
score += EvaluatePosition(nextMoves[i],!me);
if(score > maxScore) {
p.display();
maxScore = score;
maxP = p;
p.display();
}
}
return score;
}
}
T maxP; // Want this to be the same Type T that is used in the function
int maxScore;
};
#endif
我試圖創建函數中使用相同的通用類型的T
的一個變量,這樣我可以節省出一些數據。這是可能的,如果是的話,它將如何完成?
這會影響呼叫站點(類型扣除將不再發生)。另外,它不是必需的(請參閱我的答案,找出隱藏實現細節的替代方案) – sehe