Przekazanie wskaźnika miedzy składowymi klasy i na zewnątrz
Ostatnio zmodyfikowano 2018-04-02 23:22
Bastian Temat założony przez niniejszego użytkownika  | 
Przekazanie wskaźnika miedzy składowymi klasy i na zewnątrz » 2018-04-02 21:19:53 Hej, Potrzebuje wystawić wskaźnik zainicjowany w w klasie, następnie w innej metodzie tej klasy przypisuje wartość pod ten wskaźnik, a następnie jest on z tej metody zwracany na zewnątrz instancji klasy KGrawler.h class KGrawler { public:     KGrawler();     ~KGrawler();     int * wystaw_wsk;     int * wystaw();      private:     (...)      }
  KGrawler.cpp KGrawler::KGrawler() { }
  KGrawler::~KGrawler() { }
  int * KGrawler::wystaw() {          * wystaw_wsk = 5;     std::cout << "To adres wskaźnika wystaw_wsk: " << wystaw_wsk << std::endl;     return wystaw_wsk; }
  main.cpp int main( int argc, char ** argv ) {          KGrawler Crawl();     std::cout << * Crawl.wystaw() << std::endl;      }
  Kod mi się kompiluje ale dostaje   Segmentation fault
 
 Dlaczego? No i jak to w takim razie zrobić poprawnie. Dodam tylko, że chciałbym coś takiego zrobić nie dla int a dla mapy std::map<std::string, boost::any> , ale pierw ćwicze na prostszym typie... Pozdrawiam  | 
 | 
jankowalski25  | 
» 2018-04-02 21:38:39 1. Dlaczego pole  int * wystaw_wsk;  jest publiczne? 2. Dlaczego nie przypisujesz temu wskaźnikowi prawidłowego adresu przed zapisaniem tam jakiejś wartości?  | 
 | 
Bastian Temat założony przez niniejszego użytkownika  | 
» 2018-04-02 22:23:35 @jankowalski25 Tak. Powinno być prywatne, to przyklad na szybko wystrugany. Czyli "Segrmentation fault" wynikał z faktu, iż chciałem przypisać wartość pod wskaźnik, którego adres był niedostępny dla programu tak? Owczywiscie jak zainicjowalem wartością to zadziałało... :)  | 
 | 
Monika90  | 
» 2018-04-02 22:44:24 Jak może się kompilować? To przecież jest deklaracja funkcji.  | 
 | 
Bastian Temat założony przez niniejszego użytkownika  | 
» 2018-04-02 23:19:47 @Monika90
  Tak. Uprościłem mój kod na potrzeby przykładu i zrobiłem babola. W moim programie inicjuje obiekt wykorzystująć konstruktor przyjmujący parametr, ale na potrzeby mojego problemu uprościłem i zapomnialem usunąć nawiasy.  | 
 | 
YooSy  | 
» 2018-04-02 23:22:24 | i zapomnialem usunąć nawiasy. |  
 Dla zapominalskich są nawiasy klamrowe.  | 
 | 
|  « 1 »  |