zwracanie wartości

zwracanie wartości
HE
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 8 lat
  • Postów:23
0

po prostu program się wyłącza tak samo jak w przypadku mojego kodu :/

Xupicor
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 8 lat
0

Tak, tego się domyśliłem, ale wklej co wypluł na ekran - bo coś pewnie wypluł?


Xupicor
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 8 lat
1
Kopiuj
int main() {
    Panelclass p;
    string a = "Eclass", b = "bejb";
    p.addObject(a, b);
    std::cerr << "found index: " << p.searchObject(b, a) << "\n";
    p.modifyObject(b, "pupa", a);
    std::cerr << "found index: " << p.searchObject(b, a);
    
    std::cerr << "\nKK";
} 
Kopiuj
    int Panelclass:: searchObject(string name,string className)                   //szuka obiekt po nazwie i zwraca jego index w classList
    {
        for(int i=0;i<classList.size();i++)
        {
            if(classList[i]->getName()==name&&classList[i]->getClassname()==className)
            {
                std::cerr << "\nIn: " << __PRETTY_FUNCTION__ << "\n" << classList[i]->getString() << "\n";
                return i;
            }
        }
        return -1;
    } 

Zmień te części - skompiluj i uruchom program. Wklej co wypisał na ekran. U mnie:

Kopiuj
In: int Panelclass::searchObject(std::__cxx11::string, std::__cxx11::string)
nazwa klasy: Eclass nazwa: bejb info: brak informacji
found index: 0

In: int Panelclass::searchObject(std::__cxx11::string, std::__cxx11::string)
nazwa klasy: Eclass nazwa: bejb info: brak informacji

In: int Panelclass::searchObject(std::__cxx11::string, std::__cxx11::string)
nazwa klasy: Eclass nazwa: bejb info: pupa
found index: 0
KK

edytowany 1x, ostatnio: Xupicor
HE
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 8 lat
  • Postów:23
0

nie wypisał nic tylko się wyłączył :/

Xupicor
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 8 lat
1

W jaki sposób uruchamiasz program? (Terminal zniknął czy został?)


HE
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 8 lat
  • Postów:23
0

odpalam przez kompiluj projekt w codeblocks i wyskakuje napis program przestał działać

edytowany 1x, ostatnio: Heptan
Xupicor
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 8 lat
1

Win+R, wpisz cmd, otworzy Ci się terminal.
Znajdz katalog, w którym masz swój projekt. Czyli jeśli jest to e:\projekty\mojprojekt - wpisz e:, klepnij Enter, wpisz cd e:\projekty\mojprojekt\bin\debug. Enter. Potem wpisz nazwę swojego programu (wpisz dir, żeby zobaczyć co tam masz).
W ten sposób zobaczysz co poszło na ekran zanim się program posypie, bo Ci terminal nie zginie.

A jeszcze lepiej - skorzystaj z debuggera. C::B ma przecież zintegrowaną obsługę - na początku programu postaw breakpoint i jazda. ;)


edytowany 1x, ostatnio: Xupicor
HE
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 8 lat
  • Postów:23
0

oki skorzystałem z debuggera i otrzymałem takie coś :

bc04add001.png

dodatkowo był komunikat segmentation fault

edytowany 1x, ostatnio: Heptan
Xupicor
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 8 lat
1

Teraz ustaw sobie breakpoint na początek metody searchObject, debuguj i przechodź krok po kroku aż Ci się wysypie. Będziesz wiedział w jakiej linijce.


HE
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 8 lat
  • Postów:23
0

Robiąc tak doszedłem że w metodzie obiektu getName() wyrzuca błąd w linijce z kodem return this->name
3c18d448d9.png

edytowany 1x, ostatnio: Heptan
Xupicor
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 8 lat
1
  1. Poprawiłeś te warningi?
  2. Jaką wartość ma this i this->name wg debuggera przed crashem?
  3. Odnośnie powyższego: jaką wartość ma i i classList[i]?

HE
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 8 lat
  • Postów:23
0

zrobiłem to w trochę inny sposób bo już nie mam siły na to wielkie dzięki za pomoc i cierpliwość Xupicor :)

edytowany 1x, ostatnio: Heptan

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.