new funktioniert nicht



  • Folgendes Beispiel macht keinen Sinn und ist völlig hirnlos, sollte aber zu kompillieren sein. Ich möchte wissen, warum minGW diesen Code nicht kompillieren will.

    std::string *test;
    test = new std::string("Hallo Welt!");
    //error: cannot convert 'std::string' to 'std::string*' in assignment
    

    Visual Studio macht das ohne Probleme. Ich habe Code::Blocks sogar schon neu installiert, aber er will trotzdem nicht.



  • Die zwei Zeilen werden definitiv von keinem C++-Compiler ohne Fehlermeldung übersetzt. Wie sieht also das echte Programm aus?



  • #include <string>
    
    int main()
    {
    	std::string *test;
    	test = new std::string("hallo");
    }
    


  • manni66 schrieb:

    Die zwei Zeilen werden definitiv von keinem C++-Compiler ohne Fehlermeldung übersetzt. Wie sieht also das echte Programm aus?

    Warum? Ich erkenne daran nichts fehlerhaftes.
    Erkläre mir das bitte.

    #include <string>
    
    int main()
    {
        std::string *test;
        test = new std::string("hallo");
    }
    

    Der Code kompiliert bei mir auch wunderbar mit GCC (halt unter Linux, ist aber prinzipiell der gleiche Compiler...).
    Man kann halt bemängeln, dass das delete fehlt oder, dass generell kein Smart Pointer verwendet wurde, aber syntaktisch ist der Code voll in Ordnung.

    Qute schrieb:

    Ich möchte wissen, warum minGW diesen Code nicht kompillieren will.

    ...

    Visual Studio macht das ohne Probleme. Ich habe Code::Blocks sogar schon neu installiert, aber er will trotzdem nicht.

    Ganz ehrlich, wenn du mal eine konkrete Fehlermeldung vom MinGW gepostet hättest,
    könnte man dir unter Umständen sogar weiterhelfen.



  • DrakoXP schrieb:

    manni66 schrieb:

    Die zwei Zeilen werden definitiv von keinem C++-Compiler ohne Fehlermeldung übersetzt. Wie sieht also das echte Programm aus?

    Warum? Ich erkenne daran nichts fehlerhaftes.
    Erkläre mir das bitte.

    Genau, der Fehler liegt im Rest des Programms, ohne den diese Zeilen nicht übersetzt werden. Oder es ist eben (wie so oft) nicht der wirkliche Code.



  • manni66 schrieb:

    Die zwei Zeilen werden definitiv von keinem C++-Compiler ohne Fehlermeldung übersetzt.

    manni66 schrieb:

    Genau, der Fehler liegt im Rest des Programms, ohne den diese Zeilen nicht übersetzt werden.

    Beides völlig falsche Aussagen. Vielleicht meinst du ja sogar das Richtige, sagst aber definitiv das Falsche. Du solltest mal an deinen Formulierungen arbeiten. 😃



  • Ich glaube er meinte, dass die 2 Zeilen alleine nich kompilierbar sind (ohne main).
    Darum soll er das vollständige Programm posten.



  • DrakoXP schrieb:

    Ganz ehrlich, wenn du mal eine konkrete Fehlermeldung vom MinGW gepostet hättest,
    könnte man dir unter Umständen sogar weiterhelfen.

    Genau.

    @Qute
    Ohne eine Fehlermeldung kann man nur rumraten, und das interessiert wohl keinen.



  • Qute schrieb:

    std::string *test;
    test = new std::string("Hallo Welt!");
    //error: cannot convert 'std::string' to 'std::string*' in assignment
    

    Visual Studio macht das ohne Probleme. Ich habe Code::Blocks sogar schon neu installiert, aber er will trotzdem nicht.

    error_ cannot convert 'std::string to 'std::string*' in assignment



  • DrakoXP schrieb:

    Man kann halt bemängeln, dass das delete fehlt oder, dass generell kein Smart Pointer verwendet wurde, aber syntaktisch ist der Code voll in Ordnung.

    Das Beispiel ist korrektes C++ und lässt sich übersetzen. Man könnte eher bemängeln, überhaupt einen std::string mit new anzulegen. Das ist schon sehr obskur. Eher würde man so was erwarten:

    std::string test;
    test = "hallo";
    


  • out schrieb:

    Qute schrieb:

    std::string *test;
    test = new std::string("Hallo Welt!");
    //error: cannot convert 'std::string' to 'std::string*' in assignment
    

    Visual Studio macht das ohne Probleme. Ich habe Code::Blocks sogar schon neu installiert, aber er will trotzdem nicht.

    error_ cannot convert 'std::string to 'std::string*' in assignment

    Diese Fehlermeldung kann bei dem Code-Stück aber nicht kommen.
    Die könnte nur kommen wenn das "new" nicht da stehen würde.
    Hast du vielleicht irgendwo ein

    #define new
    

    stehen?


Anmelden zum Antworten