Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

implementacja kolejki, problem z konstruktorem przenoszącym

Ostatnio zmodyfikowano 2015-01-06 23:57
Autor Wiadomość
_Radek
Temat założony przez niniejszego użytkownika
implementacja kolejki, problem z konstruktorem przenoszącym
» 2015-01-06 23:43:48
Witam, mam zaimplementować klasą Lista, która wygląda praktycznie tak samo jak queue. Zaciąłem się przy konstruktorze kopiującym i nie rozumiem co się dzieje. Tzn moja klasa wygląda tak
C/C++
template < typename T >
class Lista
{
    struct element
    {
        int el_;
        element * nastepny;
       
        element()
            : el_( 0 )
             , nastepny( nullptr )
        { }
       
        element( T & i, element * nas )
            : el_( i )
             , nastepny( nas )
        { }
       
    };
public:
    element * zerowy;
    element * ostatni;
   
    int rozmiar;
    //public:
    Lista();
    Lista( const Lista & lista_ );
    auto size() const->int;
    auto empty() const->bool;
    auto push_back( T i )->void;
    auto push_front( T i )->void;
    auto pop_front( void )->void;
    ~Lista();
   
};
No i zabrałem się za konstruktor kopiujący, próbowałem i nie wychodziło, tzn jak go wywoływałem to program zaczął się zapętlać, to patrzyłem gdzie może być problem, nie mogąc go znaleźć coraz to nowe linijki zakomentowywałem i doszedłem do tego że tam chyba każda pętla się zapętla... tzn w jednym miejscu kodu sobie tworzę nową listę pustą, push_beckuje parę elementów, wywołuję konstruktor kopiujący który wpisałem (głupi żeby sprawdzić co się dzieje)
C/C++
template < typename T >
Lista < T >::Lista( const Lista & lista_ )
{
    template < typename T >
    Lista < T >::Lista( const Lista & lista_ )
    {
        zerowy = nullptr;
        ostatni = nullptr;
        rozmiar = lista_.rozmiar;
        int i = 0;
        for( i; i < lista_.rozmiar; i++ )
        {
            std::cout << i;
        }
       
    }
C/C++
Lista < int > k;
k.push_back( 10 );
k.push_back( 1 );
k.push_front( 4 );
k.push_back( 2 );

Lista < int > l( k );
i mi wypisuje 0123 i... komunikat że program przestał działać... o co może chodzić?
P-124365
Monika90
» 2015-01-06 23:57:12
i mi wypisuje 0123 i... komunikat że program przestał działać... o co może chodzić?
Wypisuje 0123 ponieważ k ma cztery elementy. Następnie wywoływane są destruktory, które robią nie wiem co, bo nie pokazałeś istotnego kodu (co jest typowe dla większości pytających).
P-124367
« 1 »
  Strona 1 z 1