【发布时间】:2014-01-24 21:12:44
【问题描述】:
我阅读了一些代码并查看以下定义:
您确实需要查看代码,它只是一个代码段。
与我的问题有关的只是我使用 ** 标记,(每次我加粗这个词,总是不生效)
那些类似的用法,是不是意味着:
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你的问题也完全没有My question is: -
这就是为什么您必须绝对注意拼写。“定义”只是令人讨厌,但“模板”会导致您的程序无法编译(幸运的是)。
-
虽然我知道不是每个人都能说流利的英语,但这个问题的措辞确实令人困惑(我没有投反对票,我想我理解了,但这肯定是投反对票的原因)。请花更多时间尝试澄清问题。
-
使用
**加粗在代码段中不起作用,因为它是常规的 C++ 语法。例如int **ppi, **ppj; -
谢谢,下次我会注意并努力提高我的英语水平,让我的问题清晰,不浪费别人的时间。谢谢