Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2012, 17:12   #1
KEIego
Пользователь
 
Регистрация: 24.09.2010
Сообщений: 22
По умолчанию Ошибка при компиляции (...is not a member of std).

При компиляции возникают следующие ошибки:
wcerr/wostringstream is not a member of std

В чем причина и как это исправить? Сбит с толку.

#include <windows.h>
#include <iostream>
#include <sstream>
#include <process.h>
#include <fstream>

namespace TST
{
class Exception
{
public:
Exception(const wchar_t* szwText)
: m_wstrText(szwText)
{;};

std::wstring What() const throw()
{
return m_wstrText;
};

protected:
const std::wstring m_wstrText;
};

void le_chk(BOOL bResult, const char* file, int line)
{
if(!bResult)
{
std::clog << "An error " << GetLastError() << "occured";
std::wostringstream os;
os << L"Win32 error occured: GetLastError returned " << GetLastError() << " in " << file << L"@" << line;
throw Exception(os.str().c_str());
};
};

#define TST_LE_CHECK(res) le_chk((res), __FILE__, __LINE__)

class CallBase
{
public:
virtual void Call() = 0;
};

class AsyncActionBase
{
public:
AsyncActionBase(CallBase* pCall)
: m_hThread(NULL)
{
unsigned uId = 0;
m_hThread = (HANDLE)_beginthreadex(NULL, 0, &AsyncActionBase::thread_proc, (void*)pCall, 0, &uId);
TST_LE_CHECK(!!m_hThread);
};

virtual ~AsyncActionBase()
{
if(m_hThread)
{
TST_LE_CHECK(WaitForSingleObject(m_ hThread, INFINITE)!= WAIT_FAILED);
TST_LE_CHECK(CloseHandle(m_hThread) );
m_hThread = NULL;
};
};
protected:
static unsigned __stdcall thread_proc(void * p)
{
try
{
((CallBase*)p)->Call();
}
catch (const TST::Exception& excpt)
{
std::wcerr << excpt.What();
};
return 0;
};
HANDLE m_hThread;
};

class MyAsyncAction1
: public CallBase
, public AsyncActionBase
{
public:
MyAsyncAction1()
: AsyncActionBase(this)
{
;
};

virtual ~MyAsyncAction1()
{
;
};

//CallBase
virtual void Call()
{
for(size_t i = 0; i < 100; ++i)
{
std::cout << "Test #" << (i+1) << std::endl;
Sleep(10);
};
};
};
};

int main()
{
try
{
TST::MyAsyncAction1 oBj;
}
catch (const TST::Exception& excpt)
{
std::wcerr << excpt.What();
};
};
KEIego вне форума Ответить с цитированием
Старый 17.08.2012, 01:32   #2
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

1. Ошибка

TST_LE_CHECK(WaitForSingleObject(m_ hThread, INFINITE)!= WAIT_FAILED);
TST_LE_CHECK(CloseHandle(m_hThread) );
m_hThread = NULL;

Заменить на

TST_LE_CHECK(WaitForSingleObject(m_hThread, INFINITE)!= WAIT_FAILED);
TST_LE_CHECK(CloseHandle(m_hThread) );
m_hThread = NULL;

2. У меня все работает когда я исправил твою опечатку.
3. Ну и ошибка говорит сама за себя если перевести wcerr/wostringstream не член std
4. Зачем ставить ; после каждой закрывающейся скобки? Она обязательная только в классах структурах. Но точно не в условии if

И желательно форматировать код перед отправкой. Так понятнее намного будет
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
kineziz вне форума Ответить с цитированием
Старый 17.08.2012, 02:23   #3
KEIego
Пользователь
 
Регистрация: 24.09.2010
Сообщений: 22
По умолчанию

Цитата:
3. Ну и ошибка говорит сама за себя если перевести wcerr/wostringstream не член std
Спасибо, даже не знаю, откуда взялся этот лишний пробел.
Но все-таки неясно по поводу ошибки про членство std.
При компилировании в Dev-C++ вылезает эта ошибка и, собственно, затрудняюсь с ее исправлением. При компиляции в Visual Studio ошибки такой нет.
KEIego вне форума Ответить с цитированием
Старый 17.08.2012, 08:23   #4
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Посмотрите в тамошнем хелпе, какой хидер нужно подключать для wostringstream-а.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 17.08.2012, 10:05   #5
KEIego
Пользователь
 
Регистрация: 24.09.2010
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Гром Посмотреть сообщение
Посмотрите в тамошнем хелпе, какой хидер нужно подключать для wostringstream-а.
Нужно подключать <sstream>, который у меня и подключен.
KEIego вне форума Ответить с цитированием
Старый 17.08.2012, 10:32   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ваш компиль точно знает о широких версиях потоков?

я бы поставил норм компиль..
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 17.08.2012, 10:39   #7
KEIego
Пользователь
 
Регистрация: 24.09.2010
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
ваш компиль точно знает о широких версиях потоков?

я бы поставил норм компиль..
В Visual Studio компилится, в Dev-C++ нет. Мб, действительно, второй компилятор не так хорош.
KEIego вне форума Ответить с цитированием
Старый 17.08.2012, 10:45   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Dev C++ это не компилятор.

компиль там MinGW c gcc версии 3,4,3
это же ппц, уже 4,7 есть...

мое, ИМХО, лучше скачать последний MinGW, и к нему Code::Blocks как редактор(последний брать без компиля)
или же на студии сидеть.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 17.08.2012, 10:48   #9
KEIego
Пользователь
 
Регистрация: 24.09.2010
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
Dev C++ это не компилятор.

компиль там MinGW c gcc версии 3,4,3
это же ппц, уже 4,7 есть...

мое, ИМХО, лучше скачать последний MinGW, и к нему Code::Blocks как редактор(последний брать без компиля)
или же на студии сидеть.
Спасибо большое за отзыв и подсказку) На Dev-C++ года три назад компилил простенькие сишные программы (вывести массив, заполнить матрицу, перемножить что-то), спасала Ubunta, но ноут с убунтой в ремонте. Спасибо.
KEIego вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка при компиляции chircov090993 Общие вопросы Delphi 5 15.04.2012 21:39
Ошибка при компиляции. Rin Общие вопросы C/C++ 14 07.10.2011 20:34
ошибка при компиляции xreal C# (си шарп) 2 05.05.2011 01:43
Ошибка при компиляции FoxXx Общие вопросы C/C++ 11 14.06.2010 19:57
Ошибка при компиляции [QY]'~''LeK1[ee] Помощь студентам 2 28.05.2008 20:46