您的位置:首页 > 编程语言 > C语言/C++

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

2011-04-20 14:18 302 查看
代码如下:

#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这个词。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐