C++中模板的某种用法
阿神
阿神 2017-04-17 14:29:36
[C++讨论组]

看一些代码看到源码中模板的写法:

// DoublyLinkedListLink
template<typename Element>
class DoublyLinkedListLink {
public:
    Element*    next;
    Element*    previous;
};

// DoublyLinkedListMemberGetLink
template<typename Element,
    DoublyLinkedListLink<Element> Element::* LinkMember = &Element::fLink>
class DoublyLinkedListMemberGetLink {
private:
    typedef DoublyLinkedListLink<Element> Link;

public:
    inline Link* operator()(Element* element) const
    {
        return &(element->*LinkMember);
    }

    inline const Link* operator()(const Element* element) const
    {
        return &(element->*LinkMember);
    }
};

这行代码:

template<typename Element,
    DoublyLinkedListLink<Element> Element::* LinkMember = &Element::fLink>

模板的第二个参数是什么用法,没搞懂什么意思..
没搞懂模板这种用法的目的是啥

阿神
阿神

闭关修行中......

全部回复(1)
天蓬老师

看样子第二个参数DoublyLinkedListLink<Element> Element::* LinkMember是个指向Element里面的成员的指针,如果这样想的话,那就是Element类型里面,有一个成员的类型是DoublyLinkedListLink<Element>,这个语句的意思就是声明了一个成员指针类型,然后给它赋了个默认参数&Element::fLink。我在stackoverflow上发现个有点相似的问题,题主看看,希望对你有帮助http://stackoverflow.com/ques...

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号