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

Statyczne składowe klasy

Mały hosting, OGROMNE możliwości
0 głosów
235 wizyt
pytanie zadane 19 maja 2020 w C i C++ przez toja123321 Nowicjusz (220 p.)

Witam, mam wykonać program obiektowy, w którym ma być pole statyczne kraj, ktorym ma być Polska dla kazdego obiektu klasy TosobaS. Oraz utwórzyć kilka obiektów różnymi sposobami (zmienna, wskaźnik, referencja), wyświetlić informację o liczbie obiektów, usuwaj obiekty z wyświetleniem informacji o ich aktualnej liczbie.

Ma ktoś pomysł, dlaczego w .cpp w "TosobaS::TosobaS()" wyskakuje mi błąd i jak zrobić to pole statyczne?

MAIN:
 

#include <iostream>
#include "TosobaS.h"

using namespace std;

int main(int argc, char*argv[])
{
    cout<<"liczba obietow:"<<TosobaS::ile()<<endl;
    TosobaS *wsk1;
    cout<<"liczba obietow:"<<wsk1->ile()<<endl;
    wsk1=new TosobaS;
    cout<<"liczba obietow:"<<wsk1->ile()<<endl;
    TosobaS osobaS;
    cout<<"liczba obietow:"<<osobaS.ile()<<endl;
    cout<<"liczba obietow:"<<TosobaS::ile()<<endl;

    delete wsk1;
    cout<<"liczba obietow:"<<wsk1->ile()<<endl;
    osobaS.~TosobaS();
    cout<<"liczba obietow:"<<wsk1->ile()<<endl;
    getch();

    return 0;
}

.h :

#ifndef TOSOBAS_H
#define TOSOBAS_H
#include <iostream>
#include "TosobaS.h"

using namespace std;

const int DL=20;
class TosobaS

{
private:
  static int liczbaObiektow;//pole statyczne

protected:
  char nazwisko[DL], imie[DL];
   int wiek;

public:
  TosobaS();
   TosobaS(char *nazwisko, char *imie, int wiek);

  void podajDane();
   void wyswietl();

 ~TosobaS();
 static int ile();//metoda statyczna

};



#endif // TOSOBAS_H

.cpp
 

#include "TosobaS.h"

TosobaS::TosobaS()
{
    //ctor
}

TosobaS::~TosobaS()
{
    //dtor
}

int TosobaS::liczbaObiektow;

TosobaS::TosobaS()
{
    liczbaObiektow++;
}
TOsobaS::TOsobaS(char *wnazwisko, char *wimie, int wwiek)
{
    strcpy(nazwisko,wnazwisko); strcpy(imie, wimie); wiek=wwiek;
    liczbaObiektow++;
}
void TOsobaS::podajDane()
{
  cout << "Podaj nazwisko: "; cin>>nazwisko;
        cout << "Podaj imie: "; cin>>imie;
        cout<<" "<<endl;
}
void TosobaS::wyswietl()
{
    cout<<imie<<""<<nazwisko<<""wiek<<endl;
}
TosobaS::~TosobaS()
{
    liczbaObiektow--;
}
int TosobaS::ile()
{
    return liczbaObiektow;
}

 

komentarz 19 maja 2020 przez DragonCoder Nałogowiec (36,500 p.)
PEwnie z powodu tego, ze masz 2 razy ten sam konstruktor. Tzn

TosobaS::TosobaS()

To ze wewnatrz sie roznia nie jest wazne, poniewaz ich definicja jest taka sama. Wiec pewnie dostaniesz error, ze taki konstruktor juz istnieje. Btw. skoro dostajesz blad, to go wklej

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 330 wizyt
pytanie zadane 2 marca 2017 w Java przez Kloda Użytkownik (760 p.)
0 głosów
1 odpowiedź 1,992 wizyt
pytanie zadane 5 listopada 2017 w C i C++ przez Jakub 0 Pasjonat (23,120 p.)
+2 głosów
2 odpowiedzi 5,413 wizyt
pytanie zadane 4 lutego 2017 w Java przez Wiciorny Ekspert (283,260 p.)

93,718 zapytań

142,631 odpowiedzi

323,262 komentarzy

63,266 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...