Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z wskaźnikiem w klasie.

Ostatnio zmodyfikowano 2018-11-19 22:37
Autor Wiadomość
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.
C/C++
#include "pch.h"
#include <iostream>
#include <Windows.h>
using namespace std;

class klasa
{
public:
    klasa( int ); //konstruktor
    void wyswietl() const; //wyświetlenie wartości i adresu wskazywanej zmiennej
    ~klasa(); //destruktor
private:
    int * wsk1; //owy wskaźnik
   
   
};
int main()
{
    int coskot = 50;
    klasa klasa1( coskot );
    klasa1.wyswietl();
    system( "pause" );
}

klasa::klasa( int ab ) //konstruktor
{
    wsk1 = & ab;
    cout << wsk1 << " " << * wsk1 << endl; //żeby pokazać, że wartość się zmienia
}

void klasa::wyswietl() const //wyświetlenie wartości i adresu wskazywanej zmiennej
{
    cout << * wsk1 << " " << wsk1 << endl;
}

klasa::~klasa() //destruktor
{
    wsk1 = 0;
}
P-172895
pekfos
» 2018-11-19 21:45:19
C/C++
klasa::klasa( int ab ) //konstruktor
{
    wsk1 = & ab;
ab nie istnieje poza tą funkcją. Odwołanie do adresu tej zmiennej nie ma sensu poza tą funkcją.
P-172896
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?
P-172899
pekfos
» 2018-11-19 22:30:43
A co chcesz osiągnąć?
P-172900
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.
P-172901
pekfos
» 2018-11-19 22:35:01
C/C++
klasa::klasa( int & ab ) //konstruktor
{
    wsk1 = & ab;
P-172902
SKYNETAI
Temat założony przez niniejszego użytkownika
» 2018-11-19 22:37:03
Jezu, zapomniałem o tym, dziękuje i pozdrawiam.
P-172903
« 1 »
  Strona 1 z 1