看一些代码看到源码中模板的写法:
// DoublyLinkedListLink templateclass DoublyLinkedListLink { public: Element* next; Element* previous; }; // DoublyLinkedListMemberGetLink template Element::* LinkMember = &Element::fLink> class DoublyLinkedListMemberGetLink { private: typedef DoublyLinkedListLink Link; public: inline Link* operator()(Element* element) const { return &(element->*LinkMember); } inline const Link* operator()(const Element* element) const { return &(element->*LinkMember); } };
这行代码:
templateElement::* LinkMember = &Element::fLink>
模板的第二个参数是什么用法,没搞懂什么意思..
没搞懂模板这种用法的目的是啥
看样子第二个参数DoublyLinkedListLink<Element> Element::* LinkMember
是个指向Element
里面的成员的指针,如果这样想的话,那就是Element
类型里面,有一个成员的类型是DoublyLinkedListLink<Element>
,这个语句的意思就是声明了一个成员指针类型,然后给它赋了个默认参数&Element::fLink
。我在stackoverflow上发现个有点相似的问题,题主看看,希望对你有帮助http://stackoverflow.com/ques...