cannot call member function without object
-
Nabend.
Ich habe ein Problem bei folgendem Programm.header.h:
#ifndef HEADER_H_INCLUDED #define HEADER_H_INCLUDED class Bruch { private: double zaehler; double nenner; public: Bruch(double z = 0, double n = 0); double getZaehler(); void setZaehler(double z); double getNenner(); void setNenner(double n); void showBruch(Bruch::Bruch b); }; #endif // HEADER_H_INCLUDED
klasse.cpp:
#include "header.h" #include <iostream> Bruch::Bruch(double z, double n) { zaehler = z; nenner = n; } double Bruch::getZaehler() { return zaehler; } void Bruch::setZaehler(double z) { zaehler = z; } double Bruch::getNenner() { return nenner; } void Bruch::setNenner(double n) { nenner = n; } void Bruch::showBruch(Bruch b) { std::cout << b.getZaehler() << std::endl; std::cout << "_____" << std::endl; std::cout << b.getNenner() << std::endl; }
main.cpp:
#include <iostream> #include "header.h" int main() { Bruch b1(23,15); std::cout << b1.getZaehler() << " / " << b1.getNenner() << std::endl; Bruch::showBruch(b1); return 0; }
beim compilieren wird der Fehler
cannot call member function 'void Bruch::showBruch(Bruch)' without object
ausgegeben.
Woran liegt das?
Die getter-Aufrufe in der main() funktionieren.THX!
-
wenn du eine Funktion statisch aufrufen willst (warum?) musst du sie auch static deklarieren (nochmal: warum?)
-
Wieso übergibst du der ShowBruch()-Methode den auszugebenden Bruch eigentlich als Parameter? Als Methode der Klasse hat sie doch schon Zugriff auf ein Objekt, mit dem sie arbeiten kann.
Ansonsten: Eine normale Methode kann nur mit einem existierenden Objekt aufgerufen werden (also in der Form
b1.ShowBruch(...);
, die SchreibweiseBruch::ShowBruch(...);
ist nur für statische Methoden oder innerhalb der Klasse erlaubt.
-
ja sry völlig aufem schlauch gestanden
b1.show...
parameter raus
und this-> verwenden
-
Ist garantiert nicht die selbe.
Tipp: wnen du die Funktion so aufrufen willst, darf sie keinen parameter haben.