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

[SFML 2.0] std::vector, a obiekty sf::Font i sf::Text

Ostatnio zmodyfikowano 2013-05-26 15:03
Autor Wiadomość
Nowicjusz
Temat założony przez niniejszego użytkownika
[SFML 2.0] std::vector, a obiekty sf::Font i sf::Text
» 2013-05-26 14:33:26
Kurcze nie mam pojecia o co chodzi blad wyskakuje wtedy kiedy uzywajc vectora chce alokowac pamiec.

C/C++
extern sf::RenderWindow * Window;

class Button
{
    sf::Font Font;
    sf::Text Text;
public:
    void draw();
    Button( string Name, sf::Vector2f Position, int Size );
   
};


class Klasa
{
    vector < Button > v_Przycisk;
    Button * wsk_Przycisk;
   
public:
    void createButton( string Name, sf::Vector2f Position, int Size );
    void draw();
   
};

void Klasa::createButton( string Name, sf::Vector2f Position, int Size )
{
    v_Przycisk.push_back( Button( Name, Position, Size ) ); //Gdy alokuje w ten sposob pojawi sie blad podczas rysowania
    wsk_Przycisk = new Button( Name, Position, Size ); //Tutaj nie bedzie bledu
}

void Klasa::draw()
{
    for( int i = 0; i < v_Przycisk.size(); i++ )
         v_Przycisk[ i ].draw(); //Blad!!!
   
    wsk_Przycisk->draw(); //Nie ma bledu
}


Button::Button( string Name, sf::Vector2f Position, int Size )
{
    this->Font.loadFromFile( "Font.ttf" );
    this->Text.setFont( this->Font );
    this->Text.setString( Name );
    this->Text.setPosition( Position );
    this->Text.setCharacterSize( Size );
}

void Button::draw()
{
    Window->draw( this->Text );
}

A blad to:

Unhandled exception at xxxxx in File.exe ..........
P-83970
DejaVu
» 2013-05-26 14:36:10
Używaj:
C/C++
std::vector < TypObiektu *> wektor;
lub:
C/C++
std::list < TypObiektu > wektor;
Problem był wielokrotnie już omawiany na forum, ale w kontekście tekstur.
Frazy, które należy wpisać w wyszukiwarkę google:

http://cpp0x.pl/forum/temat/?id=6894
http://cpp0x.pl/forum/temat/?id=6840
P-83971
Nowicjusz
Temat założony przez niniejszego użytkownika
» 2013-05-26 14:41:38
Kurcze niestety to samo :(


Tak to wyglada w kodzie:

C/C++
vector < Button *> v_Przycisk;

v_Przycisk.push_back( new Button() );

for( int i = 0; i < v_Przycisk.size(); i++ )
     v_Przycisk[ i ]->draw(); //BLAD



P-83972
DejaVu
» 2013-05-26 14:50:28
C/C++
vector < Button > v_Przycisk;

v_Przycisk.push_back( new Button() );
Błąd kompilacji powinieneś mieć przy takim kodzie :)
P-83975
Nowicjusz
Temat założony przez niniejszego użytkownika
» 2013-05-26 14:51:29
Kurcze niedopatrzenie tam mialbyc wskaznik ;p Tak mam w kodzie i blad jest caly czas kombinuje strasznie i nie moe niczego wymyslic.



P-83976
DejaVu
» 2013-05-26 14:53:26
C/C++
void Klasa::createButton( string Name, sf::Vector2f Position, int Size )
{
    v_Przycisk.push_back( new Button( Name, Position, Size ) ); //<= to wystarczy zmienić
   
    wsk_Przycisk = new Button( Name, Position, Size ); //Tutaj nie bedzie bledu
}
P-83977
Nowicjusz
Temat założony przez niniejszego użytkownika
» 2013-05-26 14:57:19
Nie pomaga ani tak ani tak


C/C++
this->v_Button.push_back( new Button() );

this->v_Button.push_back( new Button( Name, Position, Size ) );

Mam dwa konstruktory domyslny i domniemany

C/C++
class Button
{
public:
    Button() {
        ....
    }
   
    Button( string Name, sf::Vector2f, int Size ) {
        ....
    }
   
};





P.S jezeli chcesz wyslalbym caly kod "poprawny" w tym ktory umiescilem troche nasciemnialem tzn nie dodawalem moim zdaniem zbednych rzeczy, nie jest az taki dlugi
P-83978
DejaVu
» 2013-05-26 15:00:48
Niech stracę... podeślij :P
P-83981
« 1 » 2
  Strona 1 z 2 Następna strona