• <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>
            小山日志
            讀書,學(xué)習(xí)與思考.
            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 的構(gòu)造函數(shù)的初始化是錯誤的,因為 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 初始化,這樣所需的依賴關(guān)系可以滿足。事實上比這更好的是, base_from_member 的構(gòu)造函數(shù)是模板函數(shù),它可以有 0 10 個參數(shù),參數(shù)類型可以各不相同。
            posted on 2006-08-11 23:59 小山日志 閱讀(534) 評論(0)  編輯 收藏 引用 所屬分類: stl/boost/loki/generically
            无码国内精品久久综合88| 国产精品99精品久久免费| 国产亚州精品女人久久久久久 | 久久精品国产一区| 久久无码AV中文出轨人妻| 久久人做人爽一区二区三区| 国产成人精品白浆久久69| 欧洲国产伦久久久久久久| 欧美牲交A欧牲交aⅴ久久| 精品久久人人爽天天玩人人妻| 欧美久久久久久| 国产精品va久久久久久久| 狠狠精品久久久无码中文字幕| 热久久国产精品| 日韩人妻无码精品久久久不卡| 一本久久a久久精品综合夜夜| 精品久久亚洲中文无码| 日韩AV毛片精品久久久| 亚洲一区中文字幕久久| 九九久久自然熟的香蕉图片| 久久亚洲国产成人精品无码区| a级成人毛片久久| 狠狠色综合网站久久久久久久高清| 国产精品欧美亚洲韩国日本久久 | 国产精品99久久不卡| 久久国产乱子伦免费精品| 少妇无套内谢久久久久| 久久久久久国产a免费观看不卡| 精品久久久久中文字幕日本| 影音先锋女人AV鲁色资源网久久 | 久久久久久青草大香综合精品| 久久久久久亚洲Av无码精品专口 | A级毛片无码久久精品免费| 三级片免费观看久久| 亚洲精品美女久久久久99小说 | 久久亚洲中文字幕精品一区| 日韩精品久久久久久| 日本三级久久网| 7国产欧美日韩综合天堂中文久久久久| 69久久精品无码一区二区| 99麻豆久久久国产精品免费|