Switch wewnątrz konstruktora

0

Taka inicjalizacja jest w konstruktorze niemożliwa.

 	marka mmarka = marka(rand()%5+1);
	switch(mmarka)
	{
		case 1:
			model mmodel = model(rand()%3+1);
			break;
		case 2:
			model mmodel = model(rand()%3+4);
			break;
		case 3:
			model mmodel = model(rand()%3+7);
			break;		
		case 4:
			model mmodel = model(rand()%3+10);
			break;
		case 5:
			model mmodel = model(rand()%3+13);
			break;		
	}

Problem polega na tym, ze chcialbym aby dopiero na podstawie wyboru zmiennej mmarka okreslalo sie zmienna mmodel. Jak mozna to zrobic, zeby kompilator sie nie doczepial? Z gory dzieki za pomoc.

0
case 1: {
  model mmodel = model(rand()%3+1);
  break;
}

Itd dla kolejnych case.

Teraz nie będzie się doczepiał. Nie działa bez dodatkowego bloku { }, ponieważ wszystkie case mają ten sam zakres.

Inną kwestią jest to, czy to co robisz ma w ogóle jakiś sens. Obiekt mmodel przestanie istnieć po wyjściu z bloku. Być może chciałeś, żeby mmodel był składnikiem klasy?

0

marka to alias na inta lub chara? W C++ nie można robić switcha na byle czym.

0

mmodel jest skladnikiem klasy, wprowadzilem zamieszanie nie mowiac ktora nazwa czym jest. W kazdym razie problem rozwiazany. Dzieki za pomoc

0

Tak generalnie czy ty jesteś kolejnym czcicielem switch/case'a?
Czemu nie zrobić po bożemu:
model mmodel = model(rand()%3+3*mmarka-2);
i żadnych switch/case.

1 użytkowników online, w tym zalogowanych: 0, gości: 1