2014-01-06 14 views
0

Я хочу создать потокобезопасный список fifo, используя библиотеку Loki, но я не могу создать защиту, потому что я использую gcc 4.3 и не поддерживает шаблоны псевдонимов :Могу ли я использовать loki ObjectLevelLockable в C++ 0x template

.... 
template <typename T> MyFIFO: public ObjectLevelLockable<MyFIFO<T>>{ 
.... 
typedef MyFIFO<T>::Lock MyLock; 
.... 
void some_function(const T& some_variable_name) 
{ 
MyLock _lock(*this);//like in "Modern c++ Design p268" 
....some code... 
} 

Любые идеи ... без установки gcc 4.7?

+0

В чем проблема с установкой компилятора, который не является древним? – PlasmaHH

+3

Установить gcc 4.8? – juanchopanza

+0

@PlasmaHH не является владельцем целевой системы. – LucianMLI

ответ

3

typename MyFIFO<T>::Lock является зависимым именем, поэтому вам нужно typename здесь:

typedef typename MyFIFO<T>::Lock MyLock; 
     ^^^^^^^^ 
+0

Большое спасибо, но теперь я получаю вызов без объекта ... Я думаю, что у него есть еще один сломанный код. – LucianMLI

+0

@LucianMLI прав, это звучит как другие, несвязанные ошибки. – juanchopanza

+0

Я получаю его на _lock (* this) .. Я скопировал (вручную) Loki lib, многопоточную часть, так что, возможно, что-то пропустил. – LucianMLI