Wpisuję w konstruktorze "false", ustawia się "true"

0

Dziwna sprawa. Mam klasę AdjencyList dziedziczącą po Container. Jak tworzę instację AdjencyList z parametrem false (co powinno ustawić zmienną isDirected na false), to isDirected ustawia mi się na true.

Konstruktory Container wyglądają tak:

Container::Container()
{
}

Container::Container(bool isDirected)
{
	this->isDirected = isDirected;
}

Konstruktory AdjencyList:

AdjacencyList::AdjacencyList()
{
}

AdjacencyList::AdjacencyList(bool isDirected):Container(isDirected)
{
}

Deklaruję teraz sobie instację klasy AdjencyList:

AdjacencyList al = new AdjacencyList(false);

Jak sobie skaczę w debuggerze, to faktycznie, uruchamia się konstruktor z parametrem false i zmienna isDirected ustawia się poprawnie, ALE od razu po zakończeniu wykonywania konstruktora, konstruktor wywołuje się znowu, ale tym razem z parametrem "true". Do isDirected przypisuje się "true" i tak już ta wartość zostaje. Ma ktoś pomysł co może być przyczyną?

3

Nie używasz wskaźnika, powinno być AdjacencyList* al = new AdjacencyList(false);

0
TomaszLiMoon napisał(a):

Nie używasz wskaźnika, powinno być AdjacencyList* al = new AdjacencyList(false);

Żeby było jasne co się dzieje, robi się cicha konwersja z AdjacencyList * do bool bo tak masz zdefiniowany konstruktor:
https://wandbox.org/permlink/cirs6dgEhUB8hlmT
Żeby się zabezpieczać przed takimi błędami lepiej dodawać explicit:
https://wandbox.org/permlink/LOEWtoKJ15UNQoeU

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