Code in C++?



  • //müll



  • '''''''''''''''''''' schrieb:

    Woher willst Du wissen das er nur char benutzen will? mich würde mal so ein typ-cast von wchar_t zu char und umgekehrt interessieren auf templatebasis.

    Steht nicht in den Anforderungen.

    @net:
    Ja, das wäre _auch_ eine Möglichkeit die Anforderungen zu erfüllen. Aber an Michael E.s Code ist nichts verkehrt. Die Funktion kopiert zwar öfter als die C Funktion: aber an C++ macht man es eben anders als in C. Es wurde ja nach einer C++ Version gefragt und da ist der Code OK, weil er ein removeDir macht. Er macht es an einer Kopie, aber ich sehe nirgendwo die Anforderung dass er das nicht darf.

    Einen index zu liefern ist übrigens auch etwas anderes. Das wäre zB in Java und C++ doof, weil man es so nicht macht. Und damit ist es nicht mehr die C++ Version des Codes.

    Nochmal langsam für dich:

    Wenn du einen index lieferst, ist das nicht das selbe wie einen Zeiger. Folglich ist es nicht möglich den Code in C++ zu schreiben.

    zufrieden?

    Nein?
    ganz klar. Man macht es in C++ halt anders. In Java auch. Deshalb wird der Code nicht 1:1 übernommen werden. Dein Code zB ist absoluter blödsinn, sowas macht man nicht.

    Nirgendwo steht etwas von Interface Kompatibilität. Es steht etwas von "Wie sieht das in C++ aus" und in C++ hat es ein anderes Interface. Ist das selbe wie
    "wie sieht"
    char p[100];
    strcpy(p, "hallo");

    in C++ aus.

    Die Antwort ist nicht:
    vector<char> p(100);
    strcpy(&p[0], "hallo");

    sondern:
    string s;
    s="hallo";

    man beachte, dass man in C++ das Problem gänzlich anders löst.

    Um interface kompatibilität zu wahren, müsste man etwas machen, was man normalerweise nicht tun würde. Und ich sehe nirgendwo die forderung danach. du etwa?



  • Hi,

    danke leute für die vielen Möglichkeiten!

    Aber ich wollte es dann für wchar_t bzw. char benutzen können, deshalb fänd ich Templatebasis besser 🙂

    Wie sähe eigentlich so ein cast aus über den hier gerade jeder redet ?



  • Shade: Danke. Du kannst deine Meinung saugut rüberbringen 🙂



  • 0xdeadbeef schrieb:

    Junge, Junge. Wie kriegt ihrs nur hin, euch so lange drum zu streiten...

    aber nein, wir streiten uns doch gar nicht. das ist eine lockere diskussion bei der wir verschiedene ansichten haben

    Shade Of Mine schrieb:

    Die Funktion kopiert zwar öfter als die C Funktion: aber an C++ macht man es eben anders als in C.

    das ist zwar nicht besonders toll aber auch nicht verboten 😉

    Shade Of Mine schrieb:

    Es wurde ja nach einer C++ Version gefragt und da ist der Code OK, weil er ein removeDir macht.

    ...wenn man sich nur am namen der funktion orientiert als an deren funktionalität.

    Shade Of Mine schrieb:

    Einen index zu liefern ist übrigens auch etwas anderes. Das wäre zB in Java und C++ doof

    in java kann man mit adressen nicht viel anfangen, ein index kommt dem aber am nächsten.
    mit einem pointer hat man gleich mehrere fliegen mit einer klappe geschlagen. wenn du stattdessen einen neuen string zurückgibst, musst du eventuell danach string-suchfunktionen anwenden, um etwas zu erreichen, was die funktion selbst machen könnte (und im original auch gemacht hat). ...und wenn die funktion von mehreren stellen im programm aufgerufen würde, müsstest du alle ändern, damit das programnm weiterhin so läuft wie bisher. sowas ist nicht schön.

    Shade Of Mine schrieb:

    weil man es so nicht macht.

    das ist keine begründung. du solltest mal öfter schreiben 'warum' etwas deiner meinung nach nicht ok ist und einfach 'das ist schlecht, das macht man nicht, ...'

    Shade Of Mine schrieb:

    Folglich ist es nicht möglich den Code in C++ zu schreiben.

    ist es doch, siehe mein beispiel. in c++ kann man im gegensatz zu java pointer verwenden. deshalb ist es möglich, eine c++-version des codes zu schreiben

    Shade Of Mine schrieb:

    Dein Code zB ist absoluter blödsinn, sowas macht man nicht.

    gut, es geht bestimmt bessser. das war nur schnell dahin gehackt aber ich denke du weisst was ich damit meinte

    Shade Of Mine schrieb:

    Ist das selbe wie
    "wie sieht"
    char p[100];
    strcpy(p, "hallo");

    in C++ aus.

    Die Antwort ist nicht:
    vector<char> p(100);
    strcpy(&p[0], "hallo");

    sondern:
    string s;
    s="hallo";

    funktioniert das mit dem strcpy in den vector überhaupt? ich glaub' nicht. aber mal davon abgesehen, bei dem beispiel bin ich ganz deiner meinung



  • funktioniert das mit dem strcpy in den vector überhaupt? ich glaub' nicht. aber mal davon abgesehen, bei dem beispiel bin ich ganz deiner meinung

    da der standard garantiert, dass vector den speicher am stück hält, ist das sehr wohl möglich



  • net: *PLONK*



  • Michael E. schrieb:

    net: *PLONK*

    ich bin schon so ein ignorant, ne 😃



  • @net:
    du erfindest lauter sachen. die anforderungen sind "den code in C++ zu schreiben" und nicht das interface gleich zu lassen oder sonst was.

    Und den index zu liefern ist absoluter blödsinn. dann wäre die funktion nämlich gänzlich falsch benannt (was sie so ja schon ein bisschen ist)

    aber zeig mir nochmal wo steht, dass das interface gleich bleiben soll oder so gut wie möglich 1:1 übernommen werden soll.

    ich sehe das nirgends.

    daraus schließe ich, dass man diese Funktion so schreiben kann, wie man es in C++ machen würde. Und das macht man mit std::string.

    Wenn du einsiehst, dass strcpy in C++ zu einem op= wird, warum siehst du dann nicht ein, dass ein char* zu einem string wird?



  • hab den code gelöscht, da er absoluter müll war 😞


Anmelden zum Antworten