用 C++ Traits 來擴充OTL

來源:互聯網
上載者:User

        OTL針對oracle、odbc分別有一套庫,包括各自的otl_connect,otl_stream等。二者通過命名空間加以區別。但是,設想我們有一個類,這個類可能使用oracle,也可能使用odbc;那麼我們勢必要為它寫N個模板參數。我們可以用C++ Traits的方法來解決這一問題。

template<typename C, typename S, typename R, typename I>
struct COTLTraits
...{
    typedef C otl_connect;
    typedef S otl_stream;
    typedef R otl_refcur_stream;
    typedef I otl_stream_read_iterator;
};

typedef otl_stream_read_iterator<    oracle::otl_stream,
                                    oracle::otl_exception,
                                    oracle::otl_lob_stream> oracle_stream_read_iterator;

typedef otl_stream_read_iterator<    odbc::otl_stream,
                                    odbc::otl_exception,
                                    odbc::otl_lob_stream> odbc_stream_read_iterator;

typedef COTLTraits<    oracle::otl_connect, 
                    oracle::otl_stream, 
                    oracle::otl_refcur_stream, 
                    oracle_stream_read_iterator> COracleTraits;
typedef COTLTraits<    odbc::otl_connect, 
                    odbc::otl_stream, 
                    void, 
                    odbc_stream_read_iterator> COdbcTraits;

        實際應用的時候,我們直接使用COracleTraits和COdbcTraits兩個類,就可以訪問兩套資料庫提供者。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.