• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            小山日志
            讀書,學習與思考.
            posts - 9,comments - 14,trackbacks - 0

            STL utility 一樣, boost/utility 里包含了一些實用的小工具。

            首先是 ? Base-from-Member

            有時你可能需要依賴成員變量來初始化基類,像這樣:

            class ?fdoutbuf
            ????:?
            public ?std::streambuf
            {
            public :
            ????
            explicit ?fdoutbuf(? int ?fd?);
            ????
            //
            };

            class ?fdostream
            ????:?
            public ?std::ostream
            {
            protected :
            ????fdoutbuf?buf;
            public :
            ????
            explicit ?fdostream(? int ?fd?)
            ????????:?buf(?fd?),?std::ostream(?
            & buf?)
            ????????{}
            ????
            //
            };


            但是,這里 fdostream 的構造函數的初始化是錯誤的,因為 c++ 語法要求基類的初始化要先于成員變量的初始化。 Base-from-Member 提供的解決之道如下:

            class ?fdoutbuf
            ????:?
            public ?std::streambuf
            {
            public :
            ????
            explicit ?fdoutbuf(? int ?fd?);
            ????
            //
            };

            class ?fdostream
            ????:?
            private ?boost::base_from_member < fdoutbuf >
            ????,?
            public ?std::ostream
            {
            ????
            // ?Helper?typedef's
            ????typedef?boost::base_from_member
            < fdoutbuf > ??pbase_type;
            ????typedef?std::ostream????????????????????????base_type;
            public :
            ????
            explicit ?fdostream(? int ?fd?)
            ????????:?pbase_type(?fd?),?base_type(?
            & member?)
            ????????{}
            ????
            //
            };

            模板類
            template < typename MemberType, int UniqueID = 0 >
            ??????? class boost::base_from_member;
            是一個外覆類(姑且這么叫了 ^_^ )。
            如上,私有繼承
            base_from_member ,原先的成員變量將做為 base_from_member 的成員變量 member 先于基類 base_type 初始化,這樣所需的依賴關系可以滿足。事實上比這更好的是, base_from_member 的構造函數是模板函數,它可以有 0 10 個參數,參數類型可以各不相同。
            posted on 2006-08-11 23:59 小山日志 閱讀(520) 評論(0)  編輯 收藏 引用 所屬分類: stl/boost/loki/generically
            91麻豆精品国产91久久久久久| 99精品国产在热久久| 亚洲欧美精品一区久久中文字幕| 亚洲欧美一区二区三区久久| 亚洲乱码中文字幕久久孕妇黑人| 99久久无码一区人妻a黑| 久久狠狠一本精品综合网| 亚洲成色WWW久久网站| 激情久久久久久久久久| 国产精品国色综合久久| 婷婷久久五月天| 国产真实乱对白精彩久久| 久久精品天天中文字幕人妻 | 色欲综合久久躁天天躁| 人妻少妇久久中文字幕| 亚洲精品乱码久久久久久不卡| 久久精品国产影库免费看 | 久久乐国产综合亚洲精品| 伊人久久综在合线亚洲2019| 久久亚洲欧美国产精品| 亚洲AV无一区二区三区久久| 国产精品99久久久久久宅男小说| 中文字幕成人精品久久不卡| 精品久久久久久成人AV| av午夜福利一片免费看久久| 久久久无码精品亚洲日韩按摩| 久久亚洲国产最新网站| 噜噜噜色噜噜噜久久| 思思久久99热只有频精品66| 香蕉99久久国产综合精品宅男自| 国产高清国内精品福利99久久| 色综合久久精品中文字幕首页| 国产精品免费福利久久| 国产精品久久久久久一区二区三区 | 久久国产精品一区二区| 东京热TOKYO综合久久精品 | av色综合久久天堂av色综合在 | 精品人妻伦九区久久AAA片69| 亚洲国产精品久久久久婷婷老年| 欧美亚洲另类久久综合| 国产精品成人精品久久久|