给出以下代码:
template<typename T>
class MyContainer
{
typedef T value_type;
typedef unsigned int size_type;
...
};
如何使用size_type初始化变量(如循环索引)?
应该是:
for(size_type currentIndex = size_type(0);currentIndex < bound;++currentIndex)
或
for(size_type currentIndex = static_cast<size_type>(0);currentIndex < bound;++currentIndex)
问题的基本原理是生成在更改或添加到模板参数的基础size_type类型时仍然有效的代码。
...谢谢
答案 0 :(得分:4)
我看到有四种可能性:
size_type();
size_type(0);
static_cast<size_type>(0);
0;
我更喜欢最后一个。它简洁,与其他部分具有相同的效果。
你可能担心如果类型改变这不起作用,或者其他什么。问题是,size_type
按照惯例是无符号整数。只要size_type
是一个合理的&amp; {0},0总是有效的。正确的尺寸测量类型。
答案 1 :(得分:1)
鉴于你的模板说它的unsigned int出现了
错误for(size_type currentIndex = 0;currentIndex < bound;++currentIndex)
如果你是因为日后出现类型的原因而这样做的话,那么,我个人而言,我肯定会采用构造方法(即前者)。
答案 2 :(得分:0)
第一种情况看起来很漂亮。 你可以做更多的事情:
for(size_type currentIndex = size_type(/*empty*/);