Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Ошибка компиляции Visual Studio


Автор: ecspertiza 22.4.2011, 11:40
нашел на одном из форумов оченно удобную на мой взгляд обертку над asio вот ссылка на нее

http://forum.try-catch.ru/index.php?topic=443.0

под MinGW все примеры собираются хорошо, под gcc под Linux тоже все хорошо, но по некоторым причинам нужно ее собрать под Visual Studio и при компиляции получаю вот такую вот ошибку 

Код

simple_socket::queue<T>: отсутствие в синтаксисе конструктора формальных параметров


ругается вот на эту строчку
Код

private:
      mutable boost::mutex mutex;
      std::queue<T> queue; <--- ТУТ
   };


и ссылается на конструктор класса 

Код

queue< pair > write_queue;


но на мой взгляд вроде как все кошерно, по возможности объясните чего не хватает Visual Studio для компила. Пример прилагаю

Автор: ecspertiza 22.4.2011, 12:37
Кажется нашел в чем косяк, но пока не знаю как побороть.

в обертке есть класс queue в котором есть переменная queue, но студия в отличии от других компиляторов думает что это не переменная ,а мы пытаемся класс объявить, вот и ругается. Теперь стало быть интересно как объявить переменную так что бы было понятно что это переменная, или лучше ее просто назвать по другому ?

Автор: boostcoder 22.4.2011, 12:46
ecspertiza, может быть ты открыл пространство имен std?

Автор: ecspertiza 22.4.2011, 12:51
не, все оставлял как есть;

просто вроде как получается что то на подобии этого

Код

#include <iostream>

class test{
   public:
      test();
      int test;
};

int main(int argc, char* argv[])
{
   test t();
   return 0;
}


только это нигде не компилится, а почему обертка с таким принципом собирается не могу понять

Автор: boostcoder 22.4.2011, 12:57
но на этот код и gcc ругается.

Автор: ecspertiza 22.4.2011, 12:59
вот этот парадокс меня и пугает smile ради интереса в обертке переименовал переменную queue на storage и все работает хорошо. Вообщем я думаю что это из за двойственности имен переменной и класса. Но почему gcc собрал я незнаю

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)