Problem z wskaźnikiem w klasie.
Ostatnio zmodyfikowano 2018-11-19 22:37
SKYNETAI Temat założony przez niniejszego użytkownika |
Problem z wskaźnikiem w klasie. » 2018-11-19 21:10:21 Witam, zaczynam z c++ i natrafiłem na dziwny błąd związany z wskaźnikami w klasie, a chodzi o to, że kiedy kompiluje program napisany poniżej, wskaźnik z niewiadomych dla mnie powodów zmienia swoją wartość na losową. Losowość ta objawia się nawet tym, że wartość wskaźnik przybiera takie wartości jak NAN lub DEN. Dodam, że adres na który wskazuje wskaźnik się nie zmienia, wartość obiektu wskazywanego się nie zmienia, tylko wartość wskaźnika się zmienia. Program jest debugowany w VC Community 2017, z tego powodu jest tu header pch.h. Najciekawszą rzeczą jest to ,że kiedy debuguje program w Code::Blocks kod daje oczekiwany rezultat. Prosiłbym o pomoc i wytłumaczenie dlaczego w VC program się daje taki "egzotyczny" wynik. #include "pch.h" #include <iostream> #include <Windows.h> using namespace std;
class klasa { public: klasa( int ); void wyswietl() const; ~klasa(); private: int * wsk1; }; int main() { int coskot = 50; klasa klasa1( coskot ); klasa1.wyswietl(); system( "pause" ); }
klasa::klasa( int ab ) { wsk1 = & ab; cout << wsk1 << " " << * wsk1 << endl; }
void klasa::wyswietl() const { cout << * wsk1 << " " << wsk1 << endl; }
klasa::~klasa() { wsk1 = 0; } |
|
pekfos |
» 2018-11-19 21:45:19 klasa::klasa( int ab ) { wsk1 = & ab; | ab nie istnieje poza tą funkcją. Odwołanie do adresu tej zmiennej nie ma sensu poza tą funkcją. |
|
SKYNETAI Temat założony przez niniejszego użytkownika |
» 2018-11-19 22:26:55 Czyli, jeżeli dobrze to rozumiem nie mogę zainicjować wskaźnika wsk1 po przez konstruktor? W takim razie jak, żeby wsk1 był prywatny?
|
|
pekfos |
» 2018-11-19 22:30:43 A co chcesz osiągnąć? |
|
SKYNETAI Temat założony przez niniejszego użytkownika |
» 2018-11-19 22:33:30 Chcę osiągnąć to, żeby wsk1 był zainicjowany przez zmienną z funkcji main. |
|
pekfos |
» 2018-11-19 22:35:01 klasa::klasa( int & ab ) { wsk1 = & ab; |
|
SKYNETAI Temat założony przez niniejszego użytkownika |
» 2018-11-19 22:37:03 Jezu, zapomniałem o tym, dziękuje i pozdrawiam. |
|
« 1 » |