[C++] Tworzenie obiektów w pętli

0
void onp(string & in, Stos & s)
{

    stringstream ss;
    ss << in;
    char t=0;
    Element * tmp;

    while(ss>>t)
    {

        if(isdigit(t))
        {
            ss.putback(t);
            double u;
            ss>>u;
            tmp = new Liczba(u);
            cout << "Dodaje obiekt klasy Liczba: " << u << endl;
        }
        else if(t=='+' || t=='-' || t=='/' || t=='*' || t=='^')
        {
            tmp = new Dzialanie(t);
            cout << "Dodaje obiekt klasy Dzialanie: " << t << endl;
        }
        else
        {
            cout << "W wyrazeniu wystepuje nieprawidłowy znak. Wychodze...";
            exit (1);
        }
        s.put2(tmp);
    }
}

Nie rozumiem zachowania wskaźnika tmp - cały czas ma taki sam adres (sprawdzam w debuggerze). Nie powinno być tak, że za każdym "new Liczba(u)" powinien mu być przypisywany inny adres? Jak to zrobić poprawnie?

0

Może źle patrzysz.
Wskaźnik też ma swoje miejsce w pamięci i w tym przypadku ono jest niezmienne, natomiast dla tego na co wskazuje ma ciągle inne.

#include <iostream>
#include <vector>
#include <conio.h>
using namespace std;

int main()
{
	int *tmp = 0;
	vector<int*> a;

	while(getch() != 'q')
	{
		tmp = new int;
		cout << "Adres wskaznika: " << &tmp << "    tego na co pokazuje: " << tmp << endl;
		a.push_back(tmp);
	}

	for(int i = 0; i < a.size(); ++i)
		delete a[i];

	return 0;
}

Klikaj jakiś klawisz a na koniec q.

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