При создании шаблонного векторного класса, как лучше всего разрешить использовать его тип размера? Из того, что я собрал, кажется, что нужно создать интерфейс для реального векторного класса, а затем использовать его. Такие как
for(VectorBase::size_type i = 0; i < test1.size(); ++i)
Это имеет преимущество перед
for(Vector<int>::size_type i = 0; i < test1.size(); ++i)
для того, чтобы сделать код чище и не знать шаблонный тип вектора (в случае его изменения).
Для примера моей реализации (если есть лучший способ, вот как я его создал).
class VectorBase
{
public:
typedef unsigned int size_type;
protected:
size_type mCount;
public:
VectorBase() { mCount = 2; }
virtual ~VectorBase() = 0 { }
size_type size() const { return mCount; }
};
template<typename Type>
class Vector : public VectorBase
{
public:
Vector() : VectorBase() { }
~Vector() { }
};
int main(void)
{
Vector<int> test1;
for(VectorBase::size_type i = 0; i < test1.size(); ++i)
{
cout << i << endl;
}
system("PAUSE");
return(0);
}
(Примечание: пожалуйста, не превращайте это в «Просто используйте векторный класс xxx.»).