一个c++模板的例子(类型依赖)说明

    技术2022-05-19  19

     

    代码如下:

    #include <iostream> #include <list> template <typename T> class CCustomerList { public: void push(T item) { m_customer.push_back(item); } void show_item() { CCIterator it = m_customer.begin(); while(it != m_customer.end()) { std::cout<<(*it)<<std::endl; ++it; } } private: typedef std::list<T> CustomerContainer; typedef typename CustomerContainer::iterator CCIterator; CustomerContainer m_customer; }; int main(int argc, char *argv[]) { CCustomerList<int> c; for(int i=0; i<10; ++i) c.push(i); c.show_item(); return 0; } 

     

    这里说的是CCustomerList里的

    typedef typename CustomerContainer::iterator CCIterator;

    语句。 在这条语句中必须加上typename关键字,不然编译时会报错。 根据《effective STL》里的解释: CustomerContainer::iterator 是一个依赖形式类型参数T的一种类型,所以必须在它前面放上typename这个词。

    最新回复(0)