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

Jak edytować wartość wskaźnika wskazującego na inny wskaźnik.

0 głosów
301 wizyt
pytanie zadane 31 sierpnia 2021 w C i C++ przez tonn204 Mądrala (7,470 p.)

Witam mam taki kod jak poniżej. Chodzi o to, że w klas ma atrybut, który jest wskaźnikiem na wskaźnik przekazany w konstruktorze i teraz muszę w innej metodzie tej klasy edytować wartość, którą przechowuje wskaźnik. Czyli po wykonaniu tych operacji zmienna "myVar" powinna mieć wartość 20, ale kompilator wywala mi wyjątek. Dlaczego tak jest i jak mogę uzyskać dostęp do wartość przechowywanej w pointerze na inny pointer?

 

#include <iostream>

class myClass
{
  public:
    int **pptr;
    
    myClass(int *ptr)
    {
        pptr = &ptr;
        std::cout << *ptr << std::endl;
    }
    void editNumber()
    {
        **pptr = 20;
    }
};

int main()
{
    int myVar = 10;
    
    myClass obj1(&myVar);
    obj1.editNumber();
    std::cout << myVar << std::endl;
}

 

1 odpowiedź

+3 głosów
odpowiedź 31 sierpnia 2021 przez j23 Mędrzec (195,220 p.)

Dlaczego tak jest

Dlatego, że pptr wskazuje na parametr ptr konstruktora, którego w momencie wywołania editNumber już nie ma.

Rozwiązanie:

class myClass
{
    int *ptr;
    
  public:
    myClass(int *ptr_)
    {
        ptr = ptr_;
        std::cout << *ptr << std::endl;
    }
    
    void editNumber()
    {
        *ptr = 20;
    }
};

 

Podobne pytania

0 głosów
2 odpowiedzi 1,168 wizyt
pytanie zadane 27 grudnia 2019 w C i C++ przez Sejdi Początkujący (460 p.)
0 głosów
1 odpowiedź 727 wizyt
pytanie zadane 13 sierpnia 2015 w C i C++ przez Dash Nałogowiec (29,650 p.)
0 głosów
1 odpowiedź 2,289 wizyt
pytanie zadane 25 sierpnia 2019 w C i C++ przez DamianW Bywalec (2,080 p.)

93,741 zapytań

142,676 odpowiedzi

323,294 komentarzy

63,323 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...