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

Problem z rozszerzeniem dynamicznej tablicy o nowe elementy

Ostatnio zmodyfikowano 2010-07-23 09:35
Autor Wiadomość
Maver
Temat założony przez niniejszego użytkownika
Problem z rozszerzeniem dynamicznej tablicy o nowe elementy
» 2010-07-22 20:56:15
Witam poraz kolejny mam problem. Odrazu przejdę więc do sedna sprawy. Oto kod:
C/C++
#include <iostream>
using namespace std;
///////////////////////////////////////////////////////////////////
class ob
{
public:
    int pierwszy;
   
   
   
public:
    //---------------------------------------------
    ob( int pier = 0 )
        : pierwszy( pier )
    {
    }
    //---------------------------------------------
    void * operator new( size_t ile )
    {
       
        static int licznik = 0;
        static ob * wob;
        void * wv;
        if( !licznik )
        {
            licznik++;
            ob * wob = new ob[ 15 ];
            cout << "Pierwsze wywolanie \n";
            wv = & wob[ 0 ];
            return wv;
           
        }
        else
        {
           
            cout << licznik << " wywolanie" << endl;
            licznik++;
            wv = & wob[ licznik ];
            return wv;
           
        }
    }
    //---------------------------------------------
    void pokaz()
    {
        cout << pierwszy;
    }
    //---------------------------------------------
   
   
   
   
   
};


////////////////////////////////////////////////////////////////////
int main()
{
   
   
    ob * pierwszy = new ob( 1 );
    ob * drugi = new ob( 2 );
    ob * trzeci = new ob( 3 );
   
}
Program się kompiluje jednak przy konstruowaniu drugiego elementu wykonywana jest instrukcja w bloku else więc podejrzewam że tam jest problem. Program ma za zadanie przy pierwszym wywołaniu operatora new zarezerwować miejsce na np 15 elementów natomiast przy kolejnych ma przydzielać każdemu miejsce w tablicy.
P-20103
VND
» 2010-07-23 00:52:17
zamiast:
C/C++
ob * wob = new ob[ 15 ];
daj:
C/C++
wob = new ob[ 15 ];
tworzysz nowy obiekt zamiast przypisać do istniejącego.

P-20111
Maver
Temat założony przez niniejszego użytkownika
» 2010-07-23 09:35:04
Kurde :( No rzeczywiście tworzyłem drugi wskaźnik niestatyczny i gubił adres po pierwszym wywołaniu a przy drugim nie miał już czego przypisywać. No błąd powstał na skutek wielu przeróbek tego programu bo pierw wskaźnik definiowany był w bloku if i nie usunąłem tego. Dzięki.
P-20112
« 1 »
  Strona 1 z 1