LINUX.ORG.RU

С++, вопрос про типы


0

0

Если у меня есть

template< typename T >
class Class
{
public:
    typedef T ItemType;
};

И есть
Class<MyType> c;
как написать что-то вроде
c::ItemType i;

Если написать Class<MyType>::ItemType, то это работает, а вышеприведённый вариант не работает.
Конкретно это было бы полезно при использовании STL, чтобы не писать
for( vector<vector<int> >::const_iterator i = data.begin(); ...
И при изменении типа контейнера, чтобы не приходилось менять все типы в тексте.
★★★★★

>Если написать Class<MyType>::ItemType, то это работает, а вышеприведённый вариант не работает.

Именно, так и есть.

>И при изменении типа контейнера, чтобы не приходилось менять все типы в тексте.

typedef <vector<vector<list<queue<pair<vector<int>,list<char&
gt; > > > > >
container_type;
container_type object;
for( contaiter_type::const_iterator o = object.begin(); ...

AFAIK, только так.

devinull ★★
()
Ответ на: комментарий от Begemoth

Про typeof я слышал, но использовать его так, как я хочу, не получается, typeof(c)::ItemType не работает. К тому-же (по крайней мере сейчас) это нестандартная штука..

Я просто думал, что что-то упустил из виду, вроде бы логично было бы так обращаться к типу.

Спасибо за ответы.

Legioner ★★★★★
() автор топика
Ответ на: комментарий от Begemoth

> А вот такие for'ы писать не надо

несколько слишком категорично, на мой вкус. если у меня сайд-эффекты, то for_each не очень удобен, функтор отдельно определять и скакать по коду (а то и разным файлам). А у boost::lambda уж очень бесчеловечный синтаксис.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.