Problem mit dem befehl strct{};



  • TheTester schrieb:

    weil die Struktur in C++ schreibweise geschrieben

    nein er meinte das glaube ich wegen dem & in der Funktionsparameterliste...

    Und das das C++ Schreibweise wäre ist nich richtig :).

    bye

    tt

    warum nicht?

    das würde ich gern, wissen, weil uns unsere prof das so erklärt hat und wenn die nen stuß daherredet würde ich das gerne, wissen, also warum ist das nicht die c++ schreibweise???? 😕



  • Weil es typedef auch in C gibt??



  • AJ schrieb:

    Weil es typedef auch in C gibt??

    in c++ kann man das typdef jedoch weglassen, der compiler erkennt es automatisch



  • Soviel ich weiß, ist das in C nicht anders. Allerdings sollte man zur Sicherheit trotzdem das struct vor dem Strukturnamen angeben. Und wenn man es gleich richtig macht, dann macht man das sowieso mit typedef.



  • AJ schrieb:

    Soviel ich weiß, ist das in C nicht anders. Allerdings sollte man zur Sicherheit trotzdem das struct vor dem Strukturnamen angeben. Und wenn man es gleich richtig macht, dann macht man das sowieso mit typedef.

    dann eine andere frage was bewirkt das typedef genau.



  • tja keine Ahnung was ich dir jetzt erzählen soll. Wenn wir "struct" auf das reduzieren was es in C darstellt eine "Zusammenfassung von beliebigen Datentypen". Und es auch so behandeln. Dann gibts keine Unterschiede. Dann ist folgendes in C sowie in C++ identisch.

    struct Platte
    {
      long nr;
      int anzahl;
      char titel[30];
      float preis;
    };
    

    Wenn ich jetzt eine C++ struct als C++ struct getrennt von einer C struct behandle sind beide nicht das Selbe.
    Das kommt daher weil die C++ struct eine "Art" von einer Klasse ist. Und Klassen haben wir ja in C nicht. Das trifft dann auch auf die Syntaktische Spezifikation zu. Wenn ich alles mit beachte was mir C++ bietet dann hat eine C++ struct mit einer C struct nur das gemeinsam was mir auch eine C struct erlaubt. Also das heisst C++ struct != C struct bis auf eine kleine "Untermenge" wenn ich alle Möglichkeiten ausser Acht lasse die mir C++ zusätzlich bietet.
    Also es is wirklich blöd zu beschreiben 😉

    bye

    tt



  • Hallo,

    vielleicht hilft das noch irgendwie weiter:
    http://www.c-plusplus.net/forum/viewtopic.php?t=71271&highlight=typedef+struct



  • habt ihr vielleicht ein paar konkrete beispiele dafür

    wo man den unterschied sehen kann vielleicht mit einem kleinen programm.



  • Hirogen
    *******

    ich glaube wir haben grad mächtig aneinander vorbei geredet 😉 *g* du beziehst dich anscheinend auf den code von johnny...ich mich auf den original poster

    bye

    tt



  • @Hirogen
    Wie der Name typedef schon sagt, definierst du damit einen Datentyp. Diesen Datentyp kannst du dann wie die üblichen Datentypen (int, float, char, ...) verwenden.

    @TheTester
    Wie würde denn dann eine "C++ struct" aussehen?



  • AJ
    **

    Musst du mal in der Sprachdefinition gucken, syntaxmäßig. Ich glaube da bei C++ irgendwas von public und optional private gelesen zu haben und dann kannst du ja noch Funktionen innerhalb der Struct anlegen etc.
    Das gibts alles nicht bei C, insoweit sind die sprachlich und syntaktisch schon mal verschieden wenn du die Möglichkeiten nutzt die dir C++ bietet.

    bye

    tt



  • Hmmm sobald ich mit public und private arbeite (was macht private für einen Sinn, ohne Funktionen ähh Methoden?) und dann auch noch Methoden reinbaue, würde ich sowieso von einer Klasse ausgehen und auch dementsprechend class anstatt struct verwenden.

    Man könnte doch bei C auch Funktionsaufrufe mit Hilfe von sog. Funktionszeigern in einer struct realisieren.



  • [quote="AJ"]@Hirogen
    Wie der Name typedef schon sagt, definierst du damit einen Datentyp. Diesen Datentyp kannst du dann wie die üblichen Datentypen (int, float, char, ...) verwenden.

    ja in neuen c++ compilern ist das laut meiner professorin aber nicht mehr notwendig und du kannst im .net und borland c++ X es auch ohne dem machen 😕 oder meinst du jetzt das es in C notwendig ist 😕



  • Nein, ich meine, dass es in C auch nicht notwendig ist, man aber auf der sicheren Seite ist, wenn man es macht.



  • Komische Aussage. Es ist natürlich im strengen Sinne nicht notwendig, aber es ist notwendig, wenn man es handlicher findet, einfach Platte statt struct Platte zu schreiben. Ich für meinen Teil verzichte BTW idR darauf, Strukturen zu typedef'en und arbeite mit der Langfassung.



  • Hmmm sobald ich mit public und private
    arbeite (was macht private für einen Sinn,
    ohne Funktionen ähh Methoden?) und
    dann auch noch Methoden reinbaue, würde
    ich sowieso von einer Klasse ausgehen und
    auch dementsprechend class anstatt struct verwenden.

    keine Ahnung ich konnte dem Entwickler leider nicht in den Kopf gucken, als er sich gedacht hat machen wir doch mal in C++ "struct" zu einer "Art von Klasse"

    Man könnte doch bei C auch Funktionsaufrufe mit Hilfe von sog.
    Funktionszeigern in einer struct realisieren.

    das weiß ich 🙂

    bye

    tt



  • @TheTester
    Naja irgendwas wird er sich schon dabei gedacht haben. 🙂



  • ich hab mich jetzt nochmal erkundigt und

    typedef ist definitiv 100%iges C (lt. meiner Professorin)

    und ohne typedef ist es die C++ schreibweise


Anmelden zum Antworten