powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / не получается создать std::list<std::string> lst;
22 сообщений из 22, страница 1 из 1
не получается создать std::list<std::string> lst;
    #34884887
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пишет:
! error C2059: syntax error : '('

и указывает на блок в файле list:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
	_Nodeptr _Buynode(_Nodeptr _Next,
		_Nodeptr _Prev, const _Ty& _Val)
		{	// allocate a node and set links and value
		_Nodeptr _Pnode = this->_Alnod.allocate( 1 );
		_TRY_BEGIN
		new ((void *)_Pnode) _Node(_Next, _Prev, _Val);
		_CATCH_ALL
		this->_Alnod.deallocate(_Pnode,  1 );
		_RERAISE;
		_CATCH_END
		return (_Pnode);
		}

строка: new ((void *)_Pnode) _Node(_Next, _Prev, _Val);

что это значит?
...
Рейтинг: 0 / 0
не получается создать std::list<std::string> lst;
    #34884926
Bigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Покажи код, где list создаешь

Программист - это шаман, но зачем же сразу в бубен
...
Рейтинг: 0 / 0
не получается создать std::list<std::string> lst;
    #34884936
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
std::list<std::string>	lst;
...
Рейтинг: 0 / 0
не получается создать std::list<std::string> lst;
    #34884946
Bigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tubrik
Код: plaintext
std::list<std::string>	lst;


И ещё код где этот лист пользуешь
...
Рейтинг: 0 / 0
не получается создать std::list<std::string> lst;
    #34884993
Bigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tubrikпишет:
! error C2059: syntax error : '('

и указывает на блок в файле list:



А с какой среды файл <list>
В 2005 студии

следующее
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
	_Nodeptr _Buynode(_Nodeptr _Next,
		_Nodeptr _Prev, const _Ty& _Val)
		{	// allocate a node and set links and value
		_Nodeptr _Pnode = this->_Alnod.allocate( 1 );
		int _Linkcnt =  0 ;

		_TRY_BEGIN
		this->_Alptr.construct(&_Nextnode(_Pnode), _Next);
		++_Linkcnt;
		this->_Alptr.construct(&_Prevnode(_Pnode), _Prev);
		++_Linkcnt;
		this->_Alval.construct(&_Myval(_Pnode), _Val);
		_CATCH_ALL
		if ( 1  < _Linkcnt)
			this->_Alptr.destroy(&_Prevnode(_Pnode));
		if ( 0  < _Linkcnt)
			this->_Alptr.destroy(&_Nextnode(_Pnode));
		this->_Alnod.deallocate(_Pnode,  1 );
		_RERAISE;
		_CATCH_END
		return (_Pnode);
		}
...
Рейтинг: 0 / 0
не получается создать std::list<std::string> lst;
    #34885001
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
lst.push_back(line);
...
Рейтинг: 0 / 0
не получается создать std::list<std::string> lst;
    #34885064
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tubrik
строка: new ((void *)_Pnode) _Node(_Next, _Prev, _Val);

вот именно это означает создание(размещение) _Node на уже выделенной памяти _Pnode
...
Рейтинг: 0 / 0
не получается создать std::list<std::string> lst;
    #34885071
Tubrik
Код: plaintext
1.
lst.push_back(line);

Что такое line?
Вообще весь кусок (функцию) приведи. Желательно всегда воспроизводить ошибку в маленькой тестовой программе и ее текст публиковать.
...
Рейтинг: 0 / 0
не получается создать std::list<std::string> lst;
    #34885081
Bigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tubrik
Код: plaintext
1.
lst.push_back(line);



Вот это пашет без проблем
Код: plaintext
1.
2.
3.
	
     std::list<std::wstring>	lst;
     lst.push_back(L"ddd");
     std::wcout << *lst.begin() << std::endl;
...
Рейтинг: 0 / 0
не получается создать std::list<std::string> lst;
    #34885087
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужен кусок кода, откуда инстанцирован list
...
Рейтинг: 0 / 0
не получается создать std::list<std::string> lst;
    #34885306
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в отдельном куске кода все пашет..
...
Рейтинг: 0 / 0
не получается создать std::list<std::string> lst;
    #34885339
Bigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда ищем непарную скобочку, непоставленную ; и тому подобное
Tubrikв отдельном куске кода все пашет..
...
Рейтинг: 0 / 0
не получается создать std::list<std::string> lst;
    #34885348
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
причина вот в чем:

Код: plaintext
1.
2.
3.
#ifdef _CRTDBG_MAP_ALLOC
#define new new(_NORMAL_BLOCK, __FILE__, __LINE__)
#endif /* _CRTDBG_MAP_ALLOC */

это означает, что я не могу использовать переопределенные new для отлова ликов, если использую list ? (с vector все компилится нормально)?
...
Рейтинг: 0 / 0
не получается создать std::list<std::string> lst;
    #34885612
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну почему, если define Будет стоять после #include от stl все будет ок. А с vector ты просто не наступил, должно быть и там
...
Рейтинг: 0 / 0
не получается создать std::list<std::string> lst;
    #34885849
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет, с вектором нормально работает, не могу понять почему..
...
Рейтинг: 0 / 0
не получается создать std::list<std::string> lst;
    #34885930
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эпт, ты поставь свой define в первой строчке и попробуй
...
Рейтинг: 0 / 0
не получается создать std::list<std::string> lst;
    #34886001
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blindedЭпт, ты поставь свой define в первой строчке и попробуй

он стоит в stdafx.h, т.е. для всех одинаково
...
Рейтинг: 0 / 0
не получается создать std::list<std::string> lst;
    #34886104
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tubrik wrote:
> причина вот в чем:
>
> #ifdef _CRTDBG_MAP_ALLOC
> #define new new(_NORMAL_BLOCK, __FILE__, __LINE__)
> #endif /* _CRTDBG_MAP_ALLOC */
>
>
> это означает, что я не могу использовать переопределенные new для отлова
> ликов, если использую list ? (с vector все компилится нормально)?

Нет, не получится. Кстати, похоже, что этот косяк есть только в VC2003.
В VC2005 поля инициализируются раздельно. Может взять реализацию от VC2005?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
не получается создать std::list<std::string> lst;
    #34886136
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот ведь настырные. Не косяк это, а вполне законное выражение. Поэтому так лучше не делать
...
Рейтинг: 0 / 0
не получается создать std::list<std::string> lst;
    #34886188
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blinded wrote:
> Не косяк это, а вполне законное выражение.
Действительно, не косяк. Я подумал, что приведено определение new из
crtdbg.h.

> Поэтому так лучше не делать
Согласен. Подобное переопределение new очень неудобно, так, как работает
только для простейших случаев.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
не получается создать std::list<std::string> lst;
    #34886377
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как сделать правильное переопределение?
...
Рейтинг: 0 / 0
не получается создать std::list<std::string> lst;
    #34887204
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tubrik wrote:

> как сделать правильное переопределение?

Правильно, или нет - я делаю так: разделяю new как оператор, выделяющий
память и инициализирующий участок памяти. То есть не использую явно void
* operator new(size_t, void *), заменяя его на функции конструирования
объектов:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
template <typename T>
inline void construct(void * p) {new(p) T; }

template <typename T, typename A>
inline void construct(void * p, const A& a) {new(p) T(a); }

template <typename T, typename A, typename B>
inline void construct(void * p, const A& a, const B& b) {new(p) T(a, b);
}

все это выносится в отдельный головной файл, что облегчает последующую
интеграцию с отладчиком выделения памяти.

А для взаимодействия с отладчиком выделения памяти создается другой макрос:
Код: plaintext
1.
2.
3.
4.
#if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)
#define NEW new(_NORMAL_BLOCK, __FILE__, __LINE__)
#else
#define NEW new
#endif

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / не получается создать std::list<std::string> lst;
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]