Zmiana zadeklarowanej wartości bool na const bool w zależności od jej wartości

0

Siemka,

Czy jest możliwa konwersja zadeklarowanego typu w strukturze na typ stały?

Już mówię o co dokładnie chodzi.
Mam strukturę zadeklarowaną w klasie:

	struct Wall
	{
		sf::VertexArray points;
		bool isVisible = false;
	};

tworząc Wall i dodając go do wektora Walls w zależności od warunków zmieniam flagę na true

for (int row1 = 0, row2 = 1; row2 < lastRow; row1++, row2++)
		for (int p1 = 0, p2 = 1; p2 < lastRow; p1++, p2++)
		{
				if(row1 == 0)
					visibleFlag = true;

				addInvisibleWall(row1, row1, p1, p2, visibleFlag);
				
				visibleFlag = false;

				if (p1 == 0)
					visibleFlag = true;

				addInvisibleWall(row1, row2, p1, p1, visibleFlag);
				
				if (p2 == labyrinthDims);
					addInvisibleWall(row1, row2, labyrinthDims, labyrinthDims, true);

				if (row2 == labyrinthDims);
					addInvisibleWall(labyrinthDims, labyrinthDims, p1, p2, true);

			visibleFlag = false;
		}

i gdy jest ustawione na wartość true to czy jest możliwość żeby dokonać konwersji na const bool ? Są to krawędzie i chcę żeby zawsze były widoczne. W środku, to ja będę potem rysował ściany.

0

Nie wiem, czy to rozwiąże Twój problem ale można zmienić typ pola bool isVisible na const bool isVisible i inicjować je w konstruktorach (domyślny na false + przyjmujący argument bool).

0

Dla wartości false nie chcę mieć const. Chodzi o to że nie chcę mieć możliwości zmieniania krwawędzi

0

To raczej nie będzie możliwe - modyfikator const w języku C++ to coś co istnieje tylko na etapie kompilacji a Ty chcesz mieć kontrolę w trakcie wykonywania programu.
Inną drogą może być definicja własnego typu udającego bool z możliwością zatrzasku na wartość true, lub prościej - dodaj getter/setter i tam (setter) odpowiedni warunek lub assert.

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