Programm funktioniert nicht, Fehlercode für mich unverständlich. HILFE



  • Hallo, ich habe ein kleines Programm geschrieben, mit dem sich der Flächeninhalt eines Kreises bestimmen lässt. Jedoch meckert mein Compiler und spuckt diesen Fehlercode aus:

    /home/julian/Projekt/main.cpp: In Funktion »double circalc()«:
    /home/julian/Projekt/main.cpp:26:34: Fehler: ungültige Verwendung der nicht-statischen Elementfunktion »float Circle::areafr()«
         std::cout << "The area is: " << cir.areafr <<'\n';
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
    In file included from /home/julian/Projekt/main.cpp:9:0:
    /home/julian/Projekt/circalc.h:11:9: Anmerkung: hier deklariert
       float areafr() {                              /*area  by  radius*/
             ^~~~~~
    /home/julian/Projekt/main.cpp:31:8: Fehler: Redeklaration von »Circle cir«
     Circle cir;
            ^~~
    /home/julian/Projekt/main.cpp:23:8: Anmerkung: »Circle cir« wurde bereits hier deklariert
     Circle cir;
            ^~~
    /home/julian/Projekt/main.cpp:34:34: Fehler: ungültige Verwendung der nicht-statischen Elementfunktion »float Circle::areafc()«
         std::cout << "The area is: " << cir.areafc <<'\n';
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
    In file included from /home/julian/Projekt/main.cpp:9:0:
    /home/julian/Projekt/circalc.h:16:9: Anmerkung: hier deklariert
       float areafc(){                               /*area  by  circumference*/
             ^~~~~~
    /home/julian/Projekt/main.cpp:39:8: Fehler: Redeklaration von »Circle cir«
     Circle cir;
            ^~~
    /home/julian/Projekt/main.cpp:23:8: Anmerkung: »Circle cir« wurde bereits hier deklariert
     Circle cir;
            ^~~
    /home/julian/Projekt/main.cpp:42:34: Fehler: ungültige Verwendung der nicht-statischen Elementfunktion »float Circle::areafd()«
         std::cout << "The area is: " << cir.areafd <<'\n';
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
    In file included from /home/julian/Projekt/main.cpp:9:0:
    /home/julian/Projekt/circalc.h:21:9: Anmerkung: hier deklariert
       float areafd(){                                 /*area  by  diameter*/
             ^~~~~~
    
    /*
    Author: Julian S.
    */
    //main.cpp
    #include <stdio.h>
    #include <cstdlib>
    #include <iostream>
    #include <stdlib.h>
    #include <math.h>
    #include "circalc.h"
    
    double circalc(){
    /* message */
      std::cout << "\t Calculate area by:\n"
                << "1. Radius\n"
                << "2. Dircumference\n"
                << "3. Diameter\n";
                                                                                    //Note:
    char inpt;
    std::cin >> inpt;
    switch (inpt) {
      case '1':
    Circle cir;
        std::cout << "Please type in the radius: " << '\n';
        std::cin >> cir.radius;
        std::cout << "The area is: " << cir.areafr <<'\n';
        std::cin.sync();
        std::cin.get();
        break;
      case '2':
    Circle cir;
        std::cout << "Please type in the circumference: " << '\n';
        std::cin >> cir.circumference;
        std::cout << "The area is: " << cir.areafc <<'\n';
        std::cin.sync();
        std::cin.get();
        break;
      case '3':
    Circle cir;
        std::cout << "Please type in the diameter: " << '\n';
        std::cin >> cir.diameter;
        std::cout << "The area is: " << cir.areafd <<'\n';
        std::cin.sync();
        std::cin.get();
        break;
    
      default:
        std::cout << "Seems like something went wrong- try again!" << '\n';
        break;
    }
      }
    
    void menu(){
      std::cout
      << "Main menu: \n"
      << "\t1. CirCalc\n";
    
      char inpt;
      std::cin >> inpt;
    
        switch (inpt) {
          case '1':
            circalc();
            break;
    
          default:
            std::cout << "Seems like something went wrong- try again!" << '\n';
            break;
        }
    
    }
    
    //CirCalc.h
    double circalc();
    void menu();                            /*Functions*/
    
    class Circle {
    public:
      float diameter;
      float radius;
      float circumference;
      float areafr() {                              /*area  by  radius*/
        return M_PI * radius * radius;
    
      }
    
      float areafc(){                               /*area  by  circumference*/
        return circumference / (2 * M_PI) * circumference / (2 * M_PI) * M_PI;
    
      }
    
      float areafd(){                                 /*area  by  diameter*/
        return M_PI * (diameter / 2) * (diameter / 2);
    
      }
    
    };
    
    int main(int argc, char const *argv[]) {
      menu();
    
      return 0;
    }
    


  • Klammern!

    cir.areafr()
    


  • Problem gelöst. Danke ❤



  • Was hat deine main Funtkion in einem header zu suchen?
    Wo lernst du denn einen solch komplett wahnsinnigen Programmaufbau?



  • Das mit der main Funktion im Header war ein Irrtum, habe es behoben. Danke für den Hinweis


Anmelden zum Antworten