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

Zmiana adresu wskaźnika na inny...

Ostatnio zmodyfikowano 2013-12-05 19:30
Autor Wiadomość
oputyk
Temat założony przez niniejszego użytkownika
Zmiana adresu wskaźnika na inny...
» 2013-12-05 19:00:48
Witam wszystkich. Mam pytanie - tworzymy sobie obiekt operatorem new, np. na wskaźnik o nazwie 'a'. Następnie sobie tworzymy następny obiekt (powiedzmy, że przez operator new) i ustawiamy go na wskaźnik 'a', to wtedy tamten pierwszy obiekt się kasuje, czy pozostaje "przy życiu"?
Z góry dzięki za odpowiedź.
P-98452
pekfos
» 2013-12-05 19:07:42
Ręcznie utworzony obiekt istnieje w pamięci, dopóki go ręcznie nie usuniesz.
P-98454
oputyk
Temat założony przez niniejszego użytkownika
» 2013-12-05 19:18:04
Ok, dzięki. Pytałem, bo szukam rozwiązania błędu w programie. Jakbyś mógł na niego zerknąć to byłbym bardzo wdzięczny. Oto on:
C/C++
void OB_Menu::draw( pl::Obiekt * Obiekt )
{
    while( okno->pollEvent( zd ) )
    {
        for( int i = 5; i < 11; i++ )
        {
            if( player[ i ].kolizja_kwadratowa_myszki(( sf::Vector2f ) sf::Mouse::getPosition() ) )
            {
                if( zd.type == zd.MouseButtonPressed && zd.mouseButton.button == sf::Mouse::Left )
                {
                    if( i != 10 )
                    {
                        Obiekt = ob_graj; //  to właśnie ten problem - chodzi o to, że ten adres się nie przypisuje...
                    }
                    else
                    {
                        okno->close();
                    }
                }
            }
        }
    }
    //reszta część programu, która nie ma nic wspólnego z tematem...
}

C/C++
class OB_Menu
    : public pl::Obiekt
{
protected:
    pl::Timer time;
    Language * language;
    bool cz, czy;
    int number;
    sf::Text title;
    sf::Text * text;
    Obiekt * ob_graj;
    sf::Event zd;
    pl::Font font;
public:
    OB_Menu( sf::RenderWindow * Okno, Language * Lan )
    {
        font = pl::Font( "times.ttf" );
        language = Lan;
        number = 0;
        cz = true;
        czy = true;
        okno = Okno;
        player = new pl::Player[ 11 ];
        sf::Text tex( language->OB_Menu_title, font.font, 85 );
        ile_plr = 11;
        ile_tex = 8;
        tex.setColor( sf::Color::White );
        title = tex;
        player[ 0 ] = pl::Player( "OB_Menu_tlo2.png" );
        player[ 1 ] = pl::Player( "OB_Menu_tlo1.png" );
        player[ 2 ] = pl::Player( "OB_Menu_title1.png", true );
        player[ 3 ] = pl::Player( "OB_Menu_title2.png", true );
        player[ 4 ] = pl::Player( "OB_Menu_title_mask.png", true );
        for( int i = 5; i < 11; i++ )
        {
            player[ i ] = pl::Player( "OB_Menu_Menu.png", true );
        }
        text = new sf::Text[ 8 ];
        for( int i = 0; i < 8; i++ )
        {
            text[ i ] = sf::Text( "", font.font, 30 );
            text[ i ].setColor( sf::Color::Blue );
        }
        text[ 6 ].setColor( sf::Color::Red );
        text[ 7 ].setColor( sf::Color::Green );
        text[ 7 ].setStyle( sf::Text::Bold );
        text[ 6 ].setStyle( sf::Text::Bold );
        text[ 0 ].setString( language->OB_Menu_graj );
        text[ 1 ].setString( language->OB_Menu_opcje );
        text[ 2 ].setString( language->OB_Menu_instrukcja );
        text[ 3 ].setString( language->OB_Menu_wyniki );
        text[ 4 ].setString( language->OB_Menu_autorzy );
        text[ 5 ].setString( language->OB_Menu_wyjscie );
        text[ 6 ].setString( language->OB_Menu_wersja );
        text[ 7 ].setString( language->language );
        text[ 6 ].setPosition( sf::Vector2f( 14, 6 ) );
        text[ 7 ].setPosition( sf::Vector2f( 1356 - text[ 7 ].getGlobalBounds().width - 6, 6 ) );
        player[ 2 ].position =( sf::Vector2f(( 1366 - player[ 2 ].size.x ) / 2, 20 ) );
        player[ 3 ].position =( sf::Vector2f(( 1366 - player[ 2 ].size.x ) / 2, 20 ) );
        player[ 4 ].position = player[ 3 ].position;
        player[ 4 ].setOnChoose( true );
        player[ 4 ].text_center( title );
        player[ 5 ].position = sf::Vector2f(( 1366 - player[ 5 ].size.x ) / 2, player[ 3 ].position.y + player[ 3 ].size.y + 40 );
        sf::Color fs;
        for( int i = 5; i < 11; i++ )
        {
            if( i != 5 )
                 player[ i ].position = sf::Vector2f( player[ i - 1 ].position.x, player[ i - 1 ].position.y + player[ i - 1 ].size.y + 25 );
           
            player[ i ].text_center( text[ i - 5 ] );
            fs = player[ i ].color;
            fs.g = 150;
            player[ i ].colchoose = fs;
        }
        text[ 2 ].move( 0, - 2 );
        ob_graj = new OB_Graj( okno, language );
    }
    OB_Menu()
    { }
    ~OB_Menu()
    {
        delete[] text;
        delete language;
        delete[] player;
    }
    void draw( pl::Obiekt * );
};
Z góry dzięki za pomoc.
P-98456
pekfos
» 2013-12-05 19:30:37
Załóż odpowiedni temat i opisz problem.
P-98458
« 1 »
  Strona 1 z 1