• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z programem odwzorowującym salon samochodowy (obiektowo).

Object Storage Arubacloud
0 głosów
255 wizyt
pytanie zadane 29 listopada 2015 w C i C++ przez Sprintek Nowicjusz (160 p.)
edycja 29 listopada 2015 przez Sprintek

Witam, jak w temacie mam problem z programem...a właściwie tylko z jedną funkcją. Proszę o pomoc, gdyż nie mam pomysłu jak to poprawić. 

Funkcje z których korzystam wyglądają tak:

class Samochod //plik.h
{
    Silnik *silnik;
    Kolo *kola[10];
    string nazwa;
    DodatkoweWyposazenie *wyposazenie[10];
    int i, j;
public:
    Samochod *dajWzorzec(string nazwa, int moc, int liczbaCylindrow, int rozmiarKol);
    void wyswietlSpecyfikacje();
    Samochod(string nazwa, int moc, int liczbaCylindrow, int rozmiarKol);
    Samochod(Samochod &samochod);
    friend class Silnik;
    friend class Kolo;
    friend class DodatkoweWyposazenie;
};

 

Samochod::Samochod(string nazwa, int moc, int liczbaCylindrow, int rozmiarKol)
{
    this->nazwa = nazwa;
    this->silnik->moc = moc;
    this->silnik->liczbaCylindrow = liczbaCylindrow;
    this->kola[0]->rozmiar = rozmiarKol;
    this->i = 1; //size
    this->j = 0; //size
}

 

Samochod * Samochod::dajWzorzec(string n, int m, int liczbaCylindro, int rozmiarKo)
{
    Samochod *s1 = new Samochod(n, m, liczbaCylindro, rozmiarKo);
    return s1;
}

int _tmain(int argc, _TCHAR* argv[])
{
    Samochod *wzorzec = Samochod::dajWzorzec("Peugeot", 16, 140, 4);

....}

Podczas próby kompilacji pojawia się następujący błąd:

error C2352: 'Samochod::dajWzorzec' : illegal call of non-static member function

 

2 odpowiedzi

0 głosów
odpowiedź 29 listopada 2015 przez Patrycjerz Mędrzec (192,320 p.)
Przecież ta metoda ma inną deklarację i inną definicję (różne argumenty).
0 głosów
odpowiedź 29 listopada 2015 przez notabigthreat Mądrala (7,060 p.)

Najlepiej wyrzuć funkcję dajWzorzec, gdyż jest bezużyteczna. Jedyne co robi, to wywoływanie new dla podanych argumentów. Zastąp ją bezpośrednim new. Problem polega na tym, że nie masz obiektu, na którym byś użył dajWzorzec. Mógłbyś również dopisać przed typem zwracanym określenie static. Oznacza ono taką umowę:

  • funkcja nie wykorzystuje żadnych danych obiektu (np. nazwa lub kola)
  • można ją wywołać bez obiektu, w ten sposób: Samochod::funkcjaStatyczna(arg1, arg2);
komentarz 29 listopada 2015 przez Sprintek Nowicjusz (160 p.)
Mam konkretne zadanie z konkretnymi funkcjami.Nie mogę nic wyrzucić. Próbowałem deklarować ją inaczej ale bezskutecznie (ten sam błąd). Chodzi mi tylko o wyjaśnienie błędu, gdyż nie do końca wiem jak go poprawić i na czym dokładnie polega. Zaraz się zastosuję do Twoich rad i pokombinuje, dzięki!

Podobne pytania

0 głosów
2 odpowiedzi 1,961 wizyt
pytanie zadane 4 lutego 2018 w PHP przez toffik93 Bywalec (2,820 p.)
0 głosów
1 odpowiedź 219 wizyt
0 głosów
2 odpowiedzi 4,094 wizyt
pytanie zadane 6 lipca 2015 w C i C++ przez Masa Nowicjusz (220 p.)

92,580 zapytań

141,433 odpowiedzi

319,665 komentarzy

61,965 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...