LINUX.ORG.RU

C++, сложный typedef.


0

0



Имеются типы tKey, tValue, CacheNode <T1,T2>;

------------------------------------
typedef typename std::list < tKey > tTimeList;
typedef typename CacheNode < tValue, tTimeList :: iterator > tMapSecond;
------------------------------------

tTimeList определяется OK.
tMapSecond - ERROR.

xxxx.h:37: error: type/value mismatch at argument 2 in template parameter list for `template<class tUseful, class tSecond> struct CacheNode'

xxxx.h:37: error: expected a type, got ` std::list<tKey,std::allocator<_CharT> >::iterator'

xxxx.h:37: error: expected nested-name-specifier


СПАСИБО

Под рукой нет компилятора и не совсем ясно из какого контекста кусок кода, но...

typedef typename tTimeList::iterator tTimeList_iterator;
typedef typename CacheNode < tValue, tTimeList_iterator > tMapSecond; 

может нужно так?

Deleted
()
Ответ на: комментарий от Deleted

Нет, больше нельзя, он большой. Давай ты будешь задавать вопросы конкретные, я буду отвечать в стиле "чо откуда".

gustavo
() автор топика

typedef typename std::list < tKey > tTimeList; 
typedef typename CacheNode < tValue, typename tTimeList :: iterator > tMapSecond; 

anonymous
()

typedef std::list < tKey > tTimeList; typedef CacheNode < tValue, typename tTimeList :: iterator > tMapSecond;

имхо ...

anonymous
()
Ответ на: комментарий от anonymous

Ничего из вышепредложенного пока не сработало. Я кое чего нашёл, возможно запощу решение скоро. Всем спасибо.

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

Жесть, пацаны.

Забыл сказать, что всё это завёрнуто в namespace A; Но не думал, что это так важно...

Так вот, надо было написать "A::" перед CacheNode, который в этом же A и валяется. Вот блин хитрый поиск имён какой, а? Вроде как я внутри A, а всё равно ведь... Надо изучать, короче... Курить и курить и курить...

typedef typename A::CacheNode < tValue, tTimeList :: iterator > tMapSecond;

Булочничество.

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

>Забыл сказать, что всё это завёрнуто в namespace A; Но не думал, что это так важно...

вот так всегда :( самое интересное остаётся за кадром

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