LINUX.ORG.RU

Ругается компилятор

 , , , ,


0

1
void__ Scene2::DrawNumeric(int__ num,int__ position)
{
	int__ j = -1,jj=-1;
	std::string str = "";
	for (auto && v : std::to_string(num)) {
		//std::cout << v /*- '0'*/ << "|";
		str += v;
		++j;
		switch (str[j])
		{
		case '0':
		{
			glBindTexture(GL_TEXTURE_2D, IndexTexture[62]);
			EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63+position], j);
			break;
		}
		case '1':
		{
			glBindTexture(GL_TEXTURE_2D, IndexTexture[63]);
			EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63 + position], j);
			break;
		}
		case '2':
		{
			glBindTexture(GL_TEXTURE_2D, IndexTexture[64]);
			EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63 + position], j);
			break;
		}
		case '3':
		{
			glBindTexture(GL_TEXTURE_2D, IndexTexture[65]);
			EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63 + position], j);
			break;
		}
		case '4':
		{
			glBindTexture(GL_TEXTURE_2D, IndexTexture[66]);
			EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63 + position], j);
			break;
		}
		case '5':
		{
			glBindTexture(GL_TEXTURE_2D, IndexTexture[67]);
			EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63 + position], j);
			break;
		}
		case '6':
		{
			glBindTexture(GL_TEXTURE_2D, IndexTexture[68]);
			EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63 + position], j);
			break;
		}
		case '7':
		{
			glBindTexture(GL_TEXTURE_2D, IndexTexture[69]);
			EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63 + position], j);
			break;
		}
		case '8':
		{
			glBindTexture(GL_TEXTURE_2D, IndexTexture[70]);
			EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63 + position], j);
			break;
		}
		case '9':
		{
			glBindTexture(GL_TEXTURE_2D, IndexTexture[71]);
			EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63 + position], j);
			break;
		}
		}
	}
}
ошибки в вижуалке 2015 все ок, а в 2010 вот в строке с for:
Ошибка	11	error C2143: синтаксическая ошибка: отсутствие "," перед ":"	E:\флешка\other\nottoch\Tropic-Island\Tropic-Island\game3\research_very_goodZZZ\Scene2.cpp	452
Ошибка	12	error C2530: v: ссылки должны быть инициализированы	E:\флешка\other\nottoch\Tropic-Island\Tropic-Island\game3\research_very_goodZZZ\Scene2.cpp	452
Ошибка	13	error C3531: v: символ, тип которого содержит спецификатор "auto" должен иметь инициализатор	E:\флешка\other\nottoch\Tropic-Island\Tropic-Island\game3\research_very_goodZZZ\Scene2.cpp	452
Ошибка	14	error C2143: синтаксическая ошибка: отсутствие ";" перед "{"	E:\флешка\other\nottoch\Tropic-Island\Tropic-Island\game3\research_very_goodZZZ\Scene2.cpp	452

case '0':
{
	glBindTexture(GL_TEXTURE_2D, IndexTexture[62]);
	EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63+position], j);
	break;
}
case '1':
{
	glBindTexture(GL_TEXTURE_2D, IndexTexture[63]);
	EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63 + position], j);
	break;
}
case '2':
{
	glBindTexture(GL_TEXTURE_2D, IndexTexture[64]);
	EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63 + position], j);
	break;
}
case '3':
{
	glBindTexture(GL_TEXTURE_2D, IndexTexture[65]);
	EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63 + position], j);
	break;
}
case '4':
{
	glBindTexture(GL_TEXTURE_2D, IndexTexture[66]);
	EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63 + position], j);
	break;
}
case '5':
{
	glBindTexture(GL_TEXTURE_2D, IndexTexture[67]);
	EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63 + position], j);
	break;
}
case '6':
{
	glBindTexture(GL_TEXTURE_2D, IndexTexture[68]);
	EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63 + position], j);
	break;
}
case '7':
{
	glBindTexture(GL_TEXTURE_2D, IndexTexture[69]);
	EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63 + position], j);
	break;
}
case '8':
{
	glBindTexture(GL_TEXTURE_2D, IndexTexture[70]);
	EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63 + position], j);
	break;
}
case '9':
{
	glBindTexture(GL_TEXTURE_2D, IndexTexture[71]);
	EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63 + position], j);
	break;
}

Жуть какая. Почему бы не сделать так?

char c = str[j];
if (0 <= j && j <= 9)
  {
	glBindTexture(GL_TEXTURE_2D, IndexTexture[62 + c]);
	EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63 + position], j);
  }

// Остальное не смотрел, мне и этого хватило

XMs ★★★★★ ()
Последнее исправление: XMs (всего исправлений: 1)

В 2010ой студии полной поддержки 11ого стандарта нет...

Очень интересная конструкция с rvalue ссылками в цикле, пояснишь смысл? Или главное ружжё побольше и ногу поближе?

onhydro ()
Ответ на: комментарий от onhydro

Очень интересная конструкция с rvalue ссылками в цикле

Работает так же как auto && работает в других местах. Тип выводится как T & для lvalue и как T && для rvalue. Со временем жизни объектов там проблем нет.

xaizek ★★★★★ ()
Последнее исправление: xaizek (всего исправлений: 1)
Ответ на: комментарий от onhydro

смысл берем число,берем конкретный разряд и подставляем вместо него изображения числа от 0 до 9 рисуем сдвигая вправо на разряд чтобы не рисовать одно число на координатах следующего

Gremlin_ ()
Ответ на: комментарий от crutch_master

ты же любишь костыли, ну покажи как можно выделить память , заполнить её изображениями и выбирать когда нужно конкретное изображение, а потом освобождать память?

Gremlin_ ()
Ответ на: комментарий от XMs

Ну я так писал на qbasic в 4, или 5м (наверно в 5м, 4й мы «проскочили») классе, про циклы знал, но что можно использовать счётчик цикла в теле - это было озарение.

DELIRIUM ★★★★☆ ()