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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2012, 19:12   #1
monolit111
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 95
По умолчанию vector(STL-й) и visual Studio 2010/08

не работает вектор...
Вот что выдает(даже при простом объявлении и проверке)

http://s2.ipicture.ru/uploads/20120213/RudATV8M.jpg
Как бороться?
Переписывать код без вектора будет долго...
monolit111 вне форума Ответить с цитированием
Старый 13.02.2012, 19:23   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

показывайте код.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 13.02.2012, 20:00   #3
monolit111
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 95
По умолчанию

Код:
#include "hge.h"
#include "hgesprite.h"
#include "hgefont.h"
#include <vector>
using namespace std;
HGE* hge=0;
hgeFont* fnt;
bool FrameFunc() {
	return false;
}
vector<int> a;
bool RenderFunc() {
	hge->Gfx_BeginScene();
	hge->Gfx_Clear(0);
	fnt->printf(5, 5, 0, "%d : %d", a[0], a[1]);
	hge->Gfx_EndScene();
	return false;
}
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
	hge=hgeCreate( HGE_VERSION );
    hge->System_SetState(HGE_WINDOWED, true); //в оконном режиме
    hge->System_SetState(HGE_SCREENWIDTH, 800);
    hge->System_SetState(HGE_SCREENHEIGHT, 640);
    hge->System_SetState(HGE_TITLE, "Эволюция");
    hge->System_SetState(HGE_FRAMEFUNC, FrameFunc);
    hge->System_SetState(HGE_RENDERFUNC, RenderFunc);
    hge->System_SetState(HGE_USESOUND, false);
	//__текстуры клетки грузим
	for(int i=0; i<10; i++) a.push_back(i);
	if (hge->System_Initiate()) {
		fnt=new hgeFont("font1.fnt");
		hge->System_Start();
	}
	hge->System_Shutdown();
	hge->Release();
    return 0;
}
monolit111 вне форума Ответить с цитированием
Старый 13.02.2012, 20:34   #4
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Функция RenderFunc сработала прежде, чем вектор а успел инициализироваться.

После того, как движок HGE узнал о её существовании:

Код:
hge->System_SetState(HGE_RENDERFUNC, RenderFunc);
Он толкнул эту функцию, прежде чем отработал цикл:

Код:
//__текстуры клетки грузим
	for(int i=0; i<10; i++) a.push_back(i);
В итоге: выход за пределы диапазона вектора.

Лекарство: Инициализировать движок только после того, как будет проинициализировано окружение.
_Bers вне форума Ответить с цитированием
Старый 13.02.2012, 21:05   #5
monolit111
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 95
По умолчанию

проверено...не катит...
monolit111 вне форума Ответить с цитированием
Старый 13.02.2012, 23:58   #6
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

monolit111

проверено...не катит...

Скорее всего, ты пользуешься китайскими версиями компиляторов. Они производятся в домашних условиях низкоквалифицированным персоналом и содержат огромное количество ошибок. Кроме того, в них реализован собственное, китайское подмножество языка C++, зачастую несовместимое с оригиналом. Они могут называться Maikrosoft C+ или ++C - проверь, что у тебя в About написано.
Например известна следующая особенность: компилятор неправильно работает с классом vector. Даже есть все делать в правильной последовательности - сначала проинициализировать вектор, а потом использовать, компилятор все делает наоборот. Исправление компилятора не предусмотрена - это весьма дорогое удовольствие, а китайцы получают маленькую зарплату.

Вывод: качай фирменный компилятор от Microsoft, в нем вектор - катит!
Rififi вне форума Ответить с цитированием
Старый 14.02.2012, 17:53   #7
monolit111
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 95
По умолчанию

вы не поверите, но студия(по кр. мере 2010) у меня как раз оттуда, т.е. с майкрософта...Вот так вот..Что делать?Как быть?)
monolit111 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
visual studio 2010>>>Cи? abzas Общие вопросы C/C++ 13 22.09.2011 20:58
Visual Studio 2010 и C Frolov Софт 12 19.12.2010 15:29
visual studio 2010 Voblax Visual C++ 8 12.12.2010 19:58
Expression Studio и Visual Studio 2010 ждать ли русские версии? Casper-SC Свободное общение 31 25.05.2010 14:31
Visual studio 2010 Dimarik Общие вопросы .NET 1 24.05.2010 01:43