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

Błąd przy drukwaniu przez kompilator -przerwane (zrzut pamięci)

Object Storage Arubacloud
0 głosów
360 wizyt
pytanie zadane 16 czerwca 2018 w C i C++ przez adaaa Nowicjusz (120 p.)
edycja 16 czerwca 2018 przez adrian17

Witam, program sie kompiluje bez błędów  jednak przy wyborze case 1 ,wyswietla mi sie informacja "Przerwane zrzut pamięci" czy ktoś mogłby mi pomóc ?
 

#include <iostream>
#include <fstream>
 
using namespace std;

class Idrukowanie{
public:
virtual string drukuj_dane()=0;

};

class Osoba : public Idrukowanie
{
protected:

string imie;

};

class Student : public Osoba{

string numer_albumu;

public:

string drukuj_dane(){
cout<<"\nPodaj dane\n";
cout<<"\nImie:";

}

};

class Pracownik : public Osoba{

string karta_pracy;
string katedra;

public:

string drukuj_dane(){
cout<<"\nPodaj dane\n";
cout<<"\nImie:";

}

};

void drukowanie(Idrukowanie*obj){

cout<<obj->drukuj_dane();

}

int main(){

Osoba**osobaArray= new Osoba *[10];

Student stud;
Pracownik prac;

osobaArray[0]=&stud;
osobaArray[1]=&prac;

int ktory;
do{ cout<<"ktory";
cin>>ktory;
switch(ktory){

case 1:{
drukowanie(osobaArray[0]);
break;
}

case 3:

{  break;}
}

}while(ktory<3);

return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 16 czerwca 2018 przez adrian17 Ekspert (344,860 p.)

Witam, program sie kompiluje bez błędów

To włącz ostrzeżenia.

main.cpp: In member function ‘virtual std::__cxx11::string Student::drukuj_dane()’:
main.cpp:30:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
main.cpp: In member function ‘virtual std::__cxx11::string Pracownik::drukuj_dane()’:
main.cpp:45:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^

(a na przyszłość wrzucaj kod do pola z kodem, bo tego się czytać nie da :/)

komentarz 16 czerwca 2018 przez adaaa Nowicjusz (120 p.)
Co masz na myśli "włącz ostrzeżenia" ?
komentarz 16 czerwca 2018 przez adrian17 Ekspert (344,860 p.)
Nie wiem jakiego edytora/kompilatorz używasz, ale każdy powinien (ew z jakąś opcją włączoną) być w stanie zauważyć, że masz funkcję zadeklarowaną jako zwracającą wartość, ale nie zwracającą niczego.
komentarz 16 czerwca 2018 przez adaaa Nowicjusz (120 p.)
Ale napisałam wyraźnie, ze kompilator kompiluje bez błędów ... Kompiluje mi bez returnow bo kiedy wstawiam sam element tablicy wszytko gra. Zreszta jak wspomniałam przy wyborze Case 1(czyli jak wciskam „1”kiedy pyta o wybór) pojawia się informacje „rzutowanie pamięci” i w tym tkwi problem, bo się wyświetla ale nic więcej nie można zrobic, wychodzi bezprawnie z pętli.
komentarz 16 czerwca 2018 przez adrian17 Ekspert (344,860 p.)

Ale napisałam wyraźnie, ze kompilator kompiluje bez błędów

A ja powiedziałem, że jeśli w opcjach edytora/kompilatora włączysz pokazywanie ostrzeżeń, prawdopodobnie powie Ci dokładnie, gdzie jest problem.

Kompiluje mi bez returnow

To nie zmienia faktu, że taka funkcja

string drukuj_dane(){
    cout<<"\nPodaj dane\n";
    cout<<"\nImie:";
}

Nie ma sensu i jest najbardziej prawdopodobnym źródłem błędu. Albo zamień ją na void, albo coś z niej zwróć.

komentarz 16 czerwca 2018 przez MsMaciek123 Pasjonat (24,760 p.)
Przepraszam że się wtrącam, ale po prostu trzeba dodać return 0 ? :-D

Podobne pytania

0 głosów
0 odpowiedzi 2,433 wizyt
pytanie zadane 21 grudnia 2020 w C i C++ przez komboboost0 Użytkownik (570 p.)
0 głosów
1 odpowiedź 145 wizyt
pytanie zadane 27 stycznia 2020 w C i C++ przez white_lioness Nowicjusz (170 p.)
0 głosów
1 odpowiedź 477 wizyt

92,551 zapytań

141,399 odpowiedzi

319,531 komentarzy

61,938 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!

...