Einsteigerproblem

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Einsteigerproblem

    Hallo,

    ich habe bis jetzt nur Java gelernt und hab mich mal an C++ herangewagt.
    Nun hab ich gleich mal ein programm geschrieben, was letztendlich Artikel verwalten soll.
    Dazu hab ich ne Klasse Artikel geschrieben.

    naja beim compilieren bekomme ich einige Fehler, mit denen ich nichts anfangen kann. Vielleicht kann mir jemand helfen.

    Quellcode

    1. #include <cstdio>;
    2. class Artikel{
    3. private:
    4. int artNr;
    5. int einkaufsPreis;
    6. int verkaufsPreis;
    7. public:
    8. Artikel(){
    9. artNr = 1;
    10. einkaufsPreis = 100;
    11. verkaufsPreis = 150;
    12. }
    13. int getArtNr() { return this->artNr; }
    14. int getEinkaufsPreis(){ return this->einkaufsPreis; }
    15. int getVerkaufsPreis(){ return this->verkaufsPreis; }
    16. };
    17. int main(){
    18. Artikel a = new Artikel();
    19. printf("Artikelnummer: %i, E-Preis: %i, V-Preis: %i",a.getArtNr(),a.getEinkaufsPreis(),a.getVerkaufsPreis());
    20. return 0;
    21. }
    Alles anzeigen

    Fehler:
    first.cc:1:18: Warnung: mehrere Token am Ende der Direktive #include
    first.cc: In function `int main()':
    first.cc:29: error: conversion from `Artikel*' to non-scalar type `Artikel'
    requested


    Ich wäre echt dankbar wenn mir jemand helfen würde.

    cya
  • Hallo mad,

    mutiger Schritt - aber auch C++ kann schön und elegant sein ;)
    Zu deinen Fehlern:
    1) #include ist eine sog. Präprozessor-Direktive (was das ist? extrem kurz: Etwas was erst mal durch den Präprozessor verändert wird und erst dann zum Compiler gelangt). Alle # am Zeilenanfang leiten solche ein. Der Fehler hier ist, dass diese normal nicht mit einem Semikolon abgeschlossen werden, was zu Problemen führen kann, Also erstmal ; weg!
    2) Bei new wirst du gleich mit dem (angeblichen) Schrecken von C/C++ konfrontiert. Dieser liefert nämlich einen Zeiger auf das neu erstellte Objekt, nicht das Objekt selbst als Rückgabe! Daher musst du den Zeiger auch einer entsprechenden Zeigervariablen zuweisen, also

    Quellcode

    1. Artikel *a = new Artikel();

    3) Durch die Änderung in 2, werden sich weitere Fehler ergeben: Der Objektzugriff mittels Zeiger erfolgt nicht per . sondern per -> was bedeutet,
    du musst auch die Zeile mit dem printf ändern:

    Quellcode

    1. printf("Artikelnummer: %i, E-Preis: %i, V-Preis: %i", a->getArtNr(),a->getEinkaufsPreis(), a->getVerkaufsPreis());