2 Fragen (arrays einbinden und const char to char)



  • Hallo...
    Habe 2 Probleme 😡

    Hab schon in der Suche nachgeschaut aber nichts passendes,also was funzt,gefunden.
    Deswegen frag ich mal nach:
    Wie bindet man ein Array von einer Klasse in eine andere Klasse ein?
    Hab das jetzt so gemacht:

    Die arrays in der map-klasse:

    int tilematrix[16][16];
    bool coll_layer[16][16];
    

    Nun die Funktion in der Player-Klasse:

    void move(bool *coll_layer[16][16]){
    
    //Bewgung des Spielers 
    //begin
    
    if (key[this->key_up] && coll_layer[player_tilex][player_tiley-1]==false){
        this->player_tiley = this->player_tiley-this->speed;
    }
    if (key[this->key_down] && coll_layer[player_tilex][player_tiley+1]==false){
        this->player_tiley = this->player_tiley+this->speed;
    }
    if (key[this->key_left] && coll_layer[player_tilex-1][player_tiley]==false){
        this->player_tilex = this->player_tilex-this->speed;
    }
    if (key[this->key_right] && coll_layer[player_tilex+1][player_tiley]==false){
        this->player_tilex = this->player_tilex+this->speed;
    }
    
    //ende
    }
    

    Und hier der Funktionsaufruf in der Hauptschleife:

    player player1;
    map karte;
    
    karte.create_map();
    player1.create_player()
    
    .
    .
    .
    
    player1.move(karte.coll_layer[16][16]);
    .
    .
    .
    

    Der Compiler meldet dann folgenden Fehler:

    no matching function call to 'player::move(bool&)
    candidates are: void player::move(bool* (*)[16])
    

    Dann hab ich noch ne Frage:
    Bestimmt kennt ihr auch das Problem:
    Wenn man z.b. ein Bild laden möchte und dafür z.b. diese Funktion geschrieben hat:

    void picture_load(char const filename,char picture_name){
    BITMAP *picture_name;
    picture_name = load_btimap(filename+"bmp",NULL);
    }
    

    Diese Funktion soll jetzt nur ein Beispeil sein.
    Wenn man nun diese Funktion wie folgt aufruft:

    picture_load("bild1","Test");
    

    kommt dann der Fehler:

    invalid conversion from 'const char* to char'
    

    Hab dazu auch schon die Suche befragt aber auch nichts gefunden um mein Problem zu lösen.

    Wäre euch sehr dankbar für Hilfe!

    THX!



  • Rambo256 schrieb:

    [...]
    Der Compiler meldet dann folgenden Fehler:

    no matching function call to 'player::move(bool&)
    candidates are: void player::move(bool* (*)[16])
    

    http://www-info2.informatik.uni-wuerzburg.de/dclc-faq/kap2.html Nr. 2.10ff.

    void picture_load(char const filename,char picture_name){
    BITMAP *picture_name;
    picture_name = load_btimap(filename+"bmp",NULL);
    }
    

    [...]
    kommt dann der Fehler:

    invalid conversion from 'const char* to char'
    

    Zwei chars verknüpft man, indem man extra Speicherbereich bereitstellt und dann beide Einzelstrings hineinkopiert (strcpy & Co, strcat & Co). Eine natürliche Verkettung mit dem +-Op funktioniert zB mit der Klasse std::string, die man hier im Forum regelmäßig vorgeführt bekommt.



  • 1. http://pw1.netcom.com/~tjensen/ptr/pointers.htm

    2. du musst ja auch pointer nehmen und nicht einzelne chars. Ein char bedeutet ein Zeichen 🙂 Und wenn du einen String beschreiben willst, dann darfst du eh kein Stringliteral nehmen!

    void load_picture(char const *filename,char *name) {
      //...
    }
    
    int main() {
      char pname[100]; //entsprechend Speicher reserviert
      load_picture("datei.picture",pname);
    }
    

    Wenn ich dich richtig einschätze, solltest du vielleicht erstmal mit den STL-Typen (std::string, std::vector) arbeiten, da diese dir das Leben deutlich erleichtern. Mit den Basis-Typen kannst du dich dann später befassen.


Anmelden zum Antworten