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

vector

Ostatnio zmodyfikowano 2011-05-25 19:54
Autor Wiadomość
czasas
Temat założony przez niniejszego użytkownika
vector
» 2011-05-25 18:25:32
Witam serdecznie wlasnie bawie sie vectorami mam programik ale nie wiem jak dodawac do wektora kolejne samochody, proszę o pomoc. Oto pliki:

plik.h

C/C++
#ifndef SAMOCHOD_H
#define SAMOCHOD_H
#include <string>
#include <iostream>

using namespace std;

class samochod
{
public:
    void wypisz();
    int waga, rok;
    string nazwa;
   
   
};

#endif

plik.cpp

C/C++
#include <iostream>
#include <vector>
#include "plik.h"
using namespace std;

void samochod::wypisz()
{
    cout << rok << endl << waga;
}

i main

C/C++
#include <cstdlib>
#include <iostream>
#include <vector>
#include <conio.h>
#include "plik.h"
using namespace std;


int main()
{
    vector < samochod > samochody;
   
    samochod fiesta;
    fiesta.waga = 30;
    fiesta.rok = 12990;
    fiesta.nazwa = "zenon";
    samochody.push_back( fiesta );
   
    samochod samara;
    samara.waga = 44;
    samara.rok = 43;
    samara.nazwa = "janina";
    samochody.push_back( samara );
   
   
    samochod samara2;
    samara2.waga = 424;
    samara2.rok = 243;
    samara2.nazwa = "janina2";
    samochody.push_back( samara2 );
   
   
    while( 1 )
    {
       
        cout << "-------------------------" << endl;
        cout << "1: usun samochod z bazy." << "|" << endl;
        cout << "2: wyswietl samochody." << "  |" << endl;
        cout << "-------------------------" << endl;
       
        cout << endl;
        int s;
       
        cout << endl;
        cin >> s;
       
        switch( s )
        {
           
        case 1:
            int pos;
            cout << "Ktory samochod usunac? ";
            cin >> pos;
           
            {
               
                cout << endl;
                samochody.erase( samochody.begin() + pos - 1 );
            }
           
           
           
            break;
        case 2:
           
            for( int i = 0; i < samochody.size(); i++ )
            {
               
                cout << "Rocznik samochodu: " << samochody[ i ].rok << endl;
                cout << "Waga auta: " << samochody[ i ].waga << endl;
                cout << "Nazwa: " << samochody[ i ].nazwa << endl;
               
                cout << endl;
            }
            break;
        case 3:
        case '2':
           
            cout << "\n\n\n|----DODAWANIE_samochodu_DO_LISTY-----|";
            cout << "\nPodaj wage: ";
            int waga;
            cin >> waga;
            cout << "rok: ";
            int rok;
            cin >> rok;
            cout << "nazwa: ";
            string nazwa;
            cin >> nazwa;
            samochody.push_back( samochod( waga, rok, nazwa ) );
            cout << "\n<***ZAKONCZONO_Z_SUKCESEM***>";
           
            break;
           
           
           
        }
    }
   
   
    system( "PAUSE" );
    return EXIT_SUCCESS;
}

samochod::samochod( int x_waga, int x_rok, string x_nazwa )
    : waga( x_waga )
    , rok( x_rok )
    , nazwa( x_nazwa )
{
}
  Probowalem to zrobic tak ale nie idzie gdzie popelniam blad?
P-33449
DejaVu
» 2011-05-25 18:54:02
P-33451
czasas
Temat założony przez niniejszego użytkownika
» 2011-05-25 19:07:57
mógłbyś bardziej sprecyzować swoją wypowiedź? bo nie za bardzo wiem jak to poprawic
P-33452
malan
» 2011-05-25 19:16:18
A co jest nie tak?
P-33453
czasas
Temat założony przez niniejszego użytkownika
» 2011-05-25 19:19:16
kompilujac ten przyklad wyskauje mi :

no matching function for call to `samochod::samochod()' 
candidates are: samochod::samochod(const samochod&)
samochod::samochod(int, int, std::string)
void std::vector<_Tp, _Alloc>::push_back(const _Tp&) [with _Tp = samochod, _Alloc = std::allocator<samochod>]
P-33454
programista12
» 2011-05-25 19:39:03
W klasie nie ma konstruktora. Spróbuj tak:
C/C++
class samochod
{
public:
    //definicje pól klasy i innych metod
    samochod( int rok, int waga, string nazwa ) //ten konstruktor wywołujesz podczas dodawania elementu, czyli samochody.push_back(samochod(2011,10000,"Samochod"))
    {
        this->rok = rok;
        this->waga = waga;
        this->nazwa = nazwa;
    }
    samochod() { } //pusty konstruktor, ponieważ przy deklaracji wektora od klasy   musiałbyś wywoływać poprzedni konstruktor
};
Używanie:
C/C++
vector < samochod > samochody;
samochody.push_back( samochod( 2011, 10000, "Samochodzik" );
P-33456
szyx_yankez
» 2011-05-25 19:52:27
Wystarczy, że do klasy 'samochod' dopiszesz:
C/C++
samochod( int, int, string );
samochod() { }

P-33460
czasas
Temat założony przez niniejszego użytkownika
» 2011-05-25 19:54:25
sorki cos z pętlą - dzieki programista12 działa ;D
P-33462
« 1 »
  Strona 1 z 1