Przekazanie adresu wskaźnika poza funkcję

0

Witam.
Od razu pragnę zaznaczyć ,że nie wiem czy moje pytanie nie będzie z półki tych heretycznych. Mianowicie zastanawiałem się nad możliwością zmiany wartości wskaźnika po wyjściu z funkcji. Mianowicie chodzi mi o coś takiego jak w wypadku zwykłych danych można zrobić przez referencje.

#include <iostream>
#include <cstdlib>

using namespace std;

class element
{
    int wartosc;
public:
    element():wartosc(rand()%100){}
    ~element(){}
    void funk(element *wsk);
    void get_value();
};

void element :: get_value()
{
    cout << wartosc << endl;
}

void element :: funk(element *wsk)
{
    element *nowy = new element();
    if(wsk==NULL)
    {
        wsk = nowy; // Chodzi mi mianowicie o to przypisanie, aby wskaźnik first w main przyjął adres nowy.
    }
    else
    {
        //
    }
}

int main()
{
    //element *first = new element();
    element *first = NULL;

    //first->get_value();
    first->funk(first);


    return 0;
}
 

Z góry dzięki za rady.

1

musisz przekazac wskaznik przez referencje.
Albo miec wskaznik na wskaznik i zmienic temu wskaznikowi na to co pokazuje (musisz przekazac do funkcji wtedy adres wskaznika)

1

Tak samo, przez referencje:

#include <iostream>
using namespace std;

void func(int *&x)
  {
   static int tb[2]={1,2};
   x=tb;
  }

int main()
  {
   int *x=0;
   func(x);
   cout<<x[0]<<' '<<x[1]<<endl;
   return 0;
  }

http://ideone.com/ijxFqo

1 użytkowników online, w tym zalogowanych: 0, gości: 1