在代碼中解釋它比較容易。函數作爲模板參數用於具有該函數作爲模板參數的類的字段
例
我有了模板,隨後哈希映射數據結構: -
template<class K,class T,long (* K_hashingFunction)(K&)> class AMap{
//^Key ^Value ^Hashing function for Key
}
它可以作爲我的預期。
然後,我要聲明的迭代器類如下: -
template<class K,class T,long (* K_hashingFunction)(K&)> class AMap_iterator{
AMap<K,T, ????? >* mapPtr=nullptr; //How should I declare its type?
}
問題:什麼是聲明mapPtr作爲一個字段以正確的方式?
AMap<K,T, K_hashingFunction >* mapPtr=nullptr; //?
AMap<K,T, &K_hashingFunction >* mapPtr=nullptr; //?
AMap<K,T, *K_hashingFunction> * mapPtr=nullptr; //?
所有論文給我一個智能感知錯誤:「不能代替模板參數」
智能感知錯誤沒有錯誤(只有可能的錯誤提示)。 'AMap * mapPtr = nullptr;'是正確的。 –
是的,我接受C++ 11及更高版本。謝謝! DieterLücking。 – javaLover
爲什麼不簡單使用'AMap *'? – AndyG