Problem z wskaźnikiem w klasie

0

Witam,

Robię sobie różne kombinacje z kodem i nie mogę zrozumieć czego wywala błąd przy uruchomieniu, poniżej skompilowanego kodu:

 #include <iostream>
using namespace std ;
#include <string>

class wizytowka
{
     string *wsk_imie ;
public :
     void personalia()
	 {
          cout << *wsk_imie;
          }
    wizytowka(string im)
       {
     wsk_imie = &im;
    // *wsk_imie = im;
       }
};
int main()
{
	wizytowka fizyk("Albert") ;

        fizyk.personalia();
        return 0;

}

Przy dodaniu operatora new wszystko ładnie działa.

A zrobiłem sobie program bez użycia klasy, wydaje mi się że analogiczny do tego powyższego :

#include <iostream>

using namespace std;
string *wsk;
void funkcja(string a)
{
     wsk = &a;
     //cout << *wsk << endl;
}
void wypisz()
{
    cout << *wsk << endl;
}


int main()
{
    string a = "Albert Einstein";
    funkcja(a);
    wypisz();
    return 0;
}

Wtedy błędu nie wywala. Oświeci mnie ktoś, bo jestem bardzo ciekawy, pewnie źle się coś odwołuję, ale nie mogę dojść gdzie.
Pozdrawiam:)

1

Jeden i drugi jest bledny. Przypisujesz adres zmiennej lokalnej do wskaznika.

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