Eigene Resourcedatei ist nur ein paar Bytes groß



  • Woher willst du nachher noch das Ende von char* erkennen?
    Das was du so einliest, wird nicht nullterminiert.
    Gibst du die Ressourcen, die du mit new anlegst überhaupt wieder frei?
    Warum nimmst du nicht einfach einen vector?



  • Ich liebe und hasse ja den Umgangston in fast jedem Forum. Spart euch jede weitere Mühe, weiß noch nicht wie, aber irgendwie kriege ich das hin. Trotzdem danke für bisherige Unterstützung.



  • Och, wir nehmen die Noobs halt gerne mal 'n bisschen hart ran. Aber wirklich nur 'n bisschen!

    Hast du denn die letzten beiden Posts verstanden? Dann müsstest du jetzt schon weiterkommen.



  • Das ist mir alles ehrlich gesagt zuviel aufwand. Ich verwende jetzt einfach das Resourcing von QT.



  • [quote="Bennisen"]

    std::string targetTex = (std::string)argv[2] + "textures.res";
    

    Das halte ich auch für sehr gewagt 😮



  • [quote="DocShoe"]

    Bennisen schrieb:

    std::string targetTex = (std::string)argv[2] + "textures.res";
    

    Das halte ich auch für sehr gewagt 😮

    Warum?



  • Weil argv[2] ein const char* ist und kein std::string . Der C-style cast führt keine Konvertierung aus und verhält sich wie ein reinterpret_cast . Oder etwa nicht?

    Ächz, diese ganzen Sonderfälle machen mich fertig o.O

    Bei einer gültigen Konvertierung verhält sich der C-cast wie ein static_cast , ansonsten eher wie ein reinterpret_cast ?



  • DocShoe schrieb:

    Weil argv[2] ein const char* ist und kein std::string . Der C-style cast führt keine Konvertierung aus und verhält sich wie ein reinterpret_cast . Oder etwa nicht?

    Ächz, diese ganzen Sonderfälle machen mich fertig o.O

    Bei einer gültigen Konvertierung verhält sich der C-cast wie ein static_cast , ansonsten eher wie ein reinterpret_cast ?

    Nein, es wäre wie:

    std::string targetTex = std::string(argv[2]) + "textures.res";
    


  • manni66 schrieb:

    DocShoe schrieb:

    Weil argv[2] ein const char* ist und kein std::string . Der C-style cast führt keine Konvertierung aus und verhält sich wie ein reinterpret_cast . Oder etwa nicht?

    Ächz, diese ganzen Sonderfälle machen mich fertig o.O

    Bei einer gültigen Konvertierung verhält sich der C-cast wie ein static_cast , ansonsten eher wie ein reinterpret_cast ?

    Nein, es wäre wie:

    std::string targetTex = std::string(argv[2]) + "textures.res";
    

    Sicher? Denn das 2. ist was ganz was anderes als das erste.
    Ich glaub kaum dass bei einem (std::string)argv[2] ein std::string constructor aufgerufen wird



  • firefly schrieb:

    manni66 schrieb:

    Bei einer gültigen Konvertierung verhält sich der C-cast wie ein static_cast , ansonsten eher wie ein reinterpret_cast ?
    Nein, es wäre wie:

    std::string targetTex = std::string(argv[2]) + "textures.res";
    

    Sicher? Denn das 2. ist was ganz was anderes als das erste.
    Ich glaub kaum dass bei einem (std::string)argv[2] ein std::string constructor aufgerufen wird

    Doch, das ist so. Hat mich auch schwer verwundert.



  • Ich glaub kaum dass bei einem (std::string)argv[2] ein std::string constructor aufgerufen wird

    Seit wann ist Programmieren eine Glaubensfrage?



  • Doch, es wird ein temporäres Objekt erstellt (bzw nicht, wegen RVO)

    struct Test
    {
    	int anderes[5];
    	int s;
    	Test(int i) : s(i) { std::cout << i; }
    };
    
    Test t = (Test)5;
    t = (Test)6;
    t = Test(7);
    

    Ausgabe:

    567
    


  • wob schrieb:

    Ich glaub kaum dass bei einem (std::string)argv[2] ein std::string constructor aufgerufen wird

    Seit wann ist Programmieren eine Glaubensfrage?

    Komm schon, wob. Solche Kommentare hast du doch nicht nötig 👎


Anmelden zum Antworten