Zmiana adresu wskaźnika na inny...
Ostatnio zmodyfikowano 2013-12-05 19:30
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ź. |
|
pekfos |
» 2013-12-05 19:07:42 Ręcznie utworzony obiekt istnieje w pamięci, dopóki go ręcznie nie usuniesz. |
|
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: 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; } else { okno->close(); } } } } } }
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. |
|
pekfos |
» 2013-12-05 19:30:37 Załóż odpowiedni temat i opisz problem. |
|
« 1 » |