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