Reklama
Pokazuje wyniki od 1 do 4 z 4

Temat: [c++] Przekazanie argumentu do metody

  1. #1
    Avatar Celestian hunter
    Data rejestracji
    2006
    Położenie
    Gliwice
    Wiek
    33
    Posty
    1,060
    Siła reputacji
    20

    Domyślny [c++] Przekazanie argumentu do metody

    Kolejne zadanie - kolejny problem >;d

    Mam klasę "Sala_kinowa", która przechowuje listę jednokierunkową, składającą się z obiektów klasy Element. Te z kolei trzymają wskaźniki na interesujące mnie obiekty innej klasy.
    No i mam kłopot z metodą dodającą elementy do listy. Właściwie ona działa, ale nie do końca według założeń:
    (...) zakładamy, że odpowiedni obiekt należy stworzyć przed wywołaniem metody, a do metody należy go przekazać bez kopiowania do obiektu lokalnego, ale też bez możliwości zmiany wewnątrz metody
    Moja metoda wygląda tak:
    Kod PHP:
    Element * Sala_kinowa::Dodaj(Element * el)
        {
    		if(head==NULL) //jeśli lista pusta, to nowy element staje się 'głową' listy
    		{
    			 head = el; 
    			 return head;
    		}
    		else//jeśli lista ma już elementy, to 'przewijam ją' i podpinam nowy el na końcu
    		{
    			Element * tmp = head;
    			while(tmp->nastepny != NULL)
    				tmp=tmp->nastepny;
    
    			tmp->nastepny=el;
    			return tmp;
    		}
         
        }
    Do metody przekazuję wskaźnik na gotowy obiekt, więc nie jest on kopiowany. Ale jak uniemożliwić jego zmianę wewnątrz metody? Próbowałem dodać const przed argumentem metody, ale później nie da się przypisać 'el' do innego wskaźnika (błędy przy head = el i tmp->nastepny=el). Help :<

  2. #2
    Avatar Gray
    Data rejestracji
    2007
    Położenie
    Gdańsk
    Posty
    2,847
    Siła reputacji
    19

    Domyślny

    Kod PHP:
    Element* Sala_kinowa::Dodaj(const Element* el)
    {
    	if (head == NULL) //jeśli lista pusta, to nowy element staje się 'głową' listy
    	{
    		head = const_cast<Element*>(el);
    		return head;
    	}
    	else //jeśli lista ma już elementy, to 'przewijam ją' i podpinam nowy el na końcu
    	{
    		Element* tmp = head;
    		while (tmp->nastepny != NULL)
    			tmp = tmp->nastepny;
    
    		tmp->nastepny = const_cast<Element*>(el);
    		return tmp;
    	}
    }

  3. #3
    Avatar Celestian hunter
    Data rejestracji
    2006
    Położenie
    Gliwice
    Wiek
    33
    Posty
    1,060
    Siła reputacji
    20

    Domyślny

    O, nie znałem tego. Dzięki!

  4. Reklama
  5. #4
    Avatar progmaniak
    Data rejestracji
    2006
    Wiek
    32
    Posty
    535
    Siła reputacji
    20

    Domyślny

    i lepiej nie znaj, const_cast raczej nie powinno sie uzywac bo swiadczy to o zle zaprojektowanym kodzie i dziwie sie ze twoje zadanie w ogole kaze wykonac taki myk - traktuj to ofc tylko jako komentarz i rade, bo zadanie to zadanie

Reklama

Informacje o temacie

Użytkownicy przeglądający temat

Aktualnie 1 użytkowników przegląda ten temat. (0 użytkowników i 1 gości)

Podobne tematy

  1. Przekazanie pieniędzy
    Przez Mega Filip w dziale Prawo i finanse
    Odpowiedzi: 9
    Ostatni post: 11-03-2017, 17:26
  2. [AJAX][PHP]Przekazanie wartości zmiennej
    Przez Abe w dziale Programowanie
    Odpowiedzi: 13
    Ostatni post: 26-06-2014, 22:41
  3. [c++/asembler] Przekazanie długiego tekstu do/z funkcji asemblerowej
    Przez Celestian hunter w dziale Programowanie
    Odpowiedzi: 6
    Ostatni post: 21-12-2013, 21:14
  4. Przekazanie domku
    Przez -Maciek Mur- w dziale Tibia
    Odpowiedzi: 3
    Ostatni post: 14-11-2012, 16:05
  5. Nowe metody zakupu czasu premium!
    Przez Spitfire w dziale Niusy
    Odpowiedzi: 28
    Ostatni post: 06-11-2009, 23:32

Zakładki

Zakładki

Zasady postowania

  • Nie możesz pisać nowych tematów
  • Nie możesz pisać postów
  • Nie możesz używać załączników
  • Nie możesz edytować swoich postów
  •