雖然嘗試應用基於策略的設計,我就死在這個(簡體):如何使策略指定一個成員變量類型?
template <class TPrintPolicy, typename T>
struct A : private TPrintPolicy {
using TPrintPolicy::Print;
T t;
void Foo() {
Print(t);
}
};
struct IntPolicy {
void Print(int n) {
std::cout << n << std::endl;
}
};
int main(int argc, char* argv[]) {
A<IntPolicy, int> a;
a.Foo();
return 0;
}
而這裏的問題:我應該如何重新定義A級,這樣將有可能只提供政策參數設置爲一個模板,讓它推斷T自身,就像這樣:
A<IntPolicy> a;
Preferrably,策略定義不應該是複雜得多那麼就是現在。有任何想法嗎?
編輯:
我忘了提及,我不希望政策導出typedef。這當然是簡單的解決方案,但不能自己推斷T的類型?
無關:`模板'僅僅是一個傳統的語法`模板`和它們之間沒有差別(和類型名稱是首選)。 –
2011-02-09 19:47:42
@PiotrLegnica:謝謝,很高興知道! – dnlgl 2011-02-09 19:55:05
在非常特殊的情況下,class和typename之間有區別,請參見[this](http://stackoverflow.com/questions/2023977/c-difference-of-keywords-typename-and-class-in-templates) – Errata 2011-02-09 20:04:25