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

Błąd C++ klasy

Object Storage Arubacloud
0 głosów
218 wizyt
pytanie zadane 1 marca 2017 w C i C++ przez Defii Nowicjusz (120 p.)
edycja 1 marca 2017 przez Defii
#include<iostream>
#include<string>
using namespace std;
class data
{
public:
int d,m,r;
data(int dz = 1, int ms = 1,
int rk = 2000)
{
    d=dz;
    m=ms;
    r=rk;
}
};
class Student :public data,{
int nrStud;
string imie;
string nazwisko;
string kierunek;
public:
Student(string imie = "", string nazwisko= "",
string kierunek= ""): imie(imie),
nazwisko(nazwisko), kierunek(kierunek),data(d,m,r){}
void NrStud(int nr){nrStud = nr;}
void PrzedstawSie(){
cout << imie << " " << nazwisko
<< " - kierunek studiow: " << kierunek << endl;}
};
class UJK :public Student,public data
{
static int liczStud;
Student Studenci[100000];

public:
void dodajStud(Student);
void listaStud();
};
int UJK::liczStud;
void UJK::dodajStud(Student Nowy){
Studenci[liczStud++] = Nowy;
}
void UJK::listaStud(){
cout << "W UJK studiuje " << liczStud
<< " studentow:" << endl << endl;
for (int i = 0; i < liczStud; i++){
cout << i + 1 << ". ";
Studenci[i].PrzedstawSie(); }
cout << endl;
}int main(){
UJK ListaStudentow;
ListaStudentow.dodajStud(Student("Jan",
"Kowalski", "Informatyka", data());
ListaStudentow.dodajStud(Student("Andrzej",
"Nowak", "Fizyka"));
ListaStudentow.dodajStud(Student("Karol",
"Malinowski", "Informatyka"));
ListaStudentow.dodajStud(Student("Anna",
"Kowalska", "Biologia"));
ListaStudentow.dodajStud(Student("Lukasz",
"Podroznik", "Geografia"));
ListaStudentow.dodajStud(Student("Archimedes",
"Liczydlo", "Matematyka"));
ListaStudentow.listaStud();
return 0;
}

 

 

komentarz 1 marca 2017 przez Marchewka900 Bywalec (2,970 p.)
Kod wstawiamy w bloczkach, w dodatku sformatowany.
komentarz 1 marca 2017 przez Dexterim Dyskutant (8,370 p.)

https://forum.pasja-informatyki.pl/faq

zapoznaj się z tym bo wątpie żeby komuś się chciało takie coś czytać

komentarz 1 marca 2017 przez Defii Nowicjusz (120 p.)
Teraz dobrze ?
komentarz 2 marca 2017 przez Marchewka900 Bywalec (2,970 p.)
Tak :)

Z resztą dostałeś już odpowiedź.

1 odpowiedź

+1 głos
odpowiedź 1 marca 2017 przez tangarr Mędrzec (154,860 p.)
ListaStudentow.dodajStud(Student("Jan", "Kowalski", "Informatyka", data());

- niezgodna ilość nawiasów
- niezgodna ilość parametrów konstruktora klasy Student
 

Student(string imie = "", string nazwisko= "", string kierunek= ""): 
    imie(imie), nazwisko(nazwisko), kierunek(kierunek),data(d,m,r){}

Konstruktor klasy bazowej (data) jest wywołany z niezainicjalizowanymi polami d,m,r należącymi do tej klasy (takie masło maślane)

class UJK :public Student,public data

Klasa student dziedziczy po klasie data więc takie wielodziedziczenie na siłę jest bez sensu.

Widzę, że masz bardzo dziwne podejście do programowania obiektowego.
Wg twojego programu student jest datą, a lista studentów (a może uczelnia) jest studentem.
Poczytaj sobie coś o enkapsulacji, np to https://4programmers.net/In%C5%BCynieria_oprogramowania/Enkapsulacja

komentarz 1 marca 2017 przez Defii Nowicjusz (120 p.)
Dziękuje za odpowiedz   jednak nie rozumiem co zle robie. Poprawiłem ilość nawiasów i konstruktor
komentarz 1 marca 2017 przez tangarr Mędrzec (154,860 p.)

A tutaj masz nadmiarowy przecinek, uniemożliwiający kompilacje

class Student :public data,{

Musisz zacząć czytać errory i warningi. Te informacje są dla ciebie a nie przeciw tobie.
Możesz spróbować użyć kompilatora online http://cpp.sh/
Bardzo ładnie pokazuje w których linijkach są problemy

komentarz 2 marca 2017 przez Defii Nowicjusz (120 p.)
Poprawiłem już ten błąd  program sie kompiluje tj. nie wykrywa błędów niestety gdy próbuje go uruchomić main.exe przestaje działać i zostaje zwrócona minusowa wartość
komentarz 2 marca 2017 przez Defii Nowicjusz (120 p.)
Ok juz sie wyświetla tylko chciałbym żeby wyświetlał też date tylko nie za bardzo wiem jak sie za to zabrać
komentarz 2 marca 2017 przez Sinnley Stary wyjadacz (12,810 p.)
Jak wygląda poprawiony kod?
komentarz 2 marca 2017 przez tangarr Mędrzec (154,860 p.)
Wystarczy dodać funkcję wyświetlającą datę w klasie data (np. pokazDate()).
Nowa funkcja będzie bardzo podobna do funkcji PrzedstawSie()

Podobne pytania

–3 głosów
1 odpowiedź 114 wizyt
pytanie zadane 25 maja 2017 w C i C++ przez MCgabi Nowicjusz (160 p.)
0 głosów
1 odpowiedź 404 wizyt
0 głosów
1 odpowiedź 302 wizyt
pytanie zadane 18 stycznia 2022 w C i C++ przez Fluxik Nowicjusz (240 p.)

92,627 zapytań

141,490 odpowiedzi

319,856 komentarzy

62,009 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!

...