Я пытаюсь понять, почему следующее не работает. У меня есть зЬй :: вектор, и я хочу назвать статической функции члена он содержится value_type так:Вызов статической функции-члена контейнера C++ STL value_type
std::vector<Vector> v;
unsigned u = v.value_type::Dim();
где вектор является фактически ЬурейеЕ для шаблонного типа:
template <typename T, unsigned U> class SVector;
typedef SVector<double, 2> Vector; //two-dimensional SVector containing doubles
и статическая функция-член Dim() фактически устанавливает размерность U вектора.
Теперь компилятор выдает сообщение об ошибке, говорящее:
error: ‘SVector<double, 2u>’ is not a base of
‘std::vector<SVector<double, 2u>, std::allocator<SVector<double, 2u> > >
который озадачивает меня. Я могу заменить, очевидно, оскорбляющие линию
unsigned u = Vector::Dim();
и что работает, но, очевидно, уродлив, как это жёстко предположения о value_type клиновых ... Спасибо!
Большое спасибо, это здорово.Я не знал, что доступ к значению value_type через экземпляр не допускается. Не могли бы вы узнать, почему это не разрешено (что пойдет не так, если это разрешено)? – yungchin 2008-10-13 12:29:37