我讀了一些代碼,並看到下面的定義:先進的模板成員使用
你確實需要看代碼,它只是一個代碼段。
我的相關問題只是我使用*什麼*標記,(我每次粗體字,總是不生效時間)
那些類似的使用,這是否意味着:
template <class A>
class AA {
functionBB(A::C c) {}
}
我的問題是: 這是否意味着當作者定義這樣的模板時,他知道hw將總是使用具有某些他知道必須具有類成員C的特定類的模板?
template<class **QueryDataT**>
class BasicRoutingInterface : boost::noncopyable{
protected:
QueryDataT & _queryData;
public:
BasicRoutingInterface(QueryDataT & qd) : _queryData(qd) { }
virtual ~BasicRoutingInterface(){ };
inline void RoutingStep(typename **QueryDataT::QueryHeap** & _forwardHeap, typename QueryDataT::QueryHeap & _backwardHeap, NodeID *middle, int *_upperbound, const int edgeBasedOffset, const bool forwardDirection) const {
const NodeID node = _forwardHeap.DeleteMin();
const int distance = _forwardHeap.GetKey(node);
....
}
'tempalte'必須是'template'也是你的問題完全缺失'我的問題是:' – deW1
這就是爲什麼你必須絕對注意拼寫。**「定義」只是令人討厭的,但是, 「tempalte」會導致你的程序不能編譯(幸運的是)。 – 2014-01-07 08:56:16
雖然我不明白每個人都能說流利的英語,但這個問題的確措詞很混亂(我沒有倒下,我認爲我理解了它,但它肯定是造成這種情況的原因)。請花點時間,並嘗試澄清這個問題。 –