Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

hi,

ich möchte mir einen eigenen kleine header-file anlegen und per include anweisung einbinden. wie unten dargestellt habe ich eine "fc_math.h" und eine "fc_math.cpp" datei, aber irgendwie klappt es nicht. weiß jemand rat ?

fc_math.h

--------------------------------------

#ifndef FC_MATH_H

#define FC_MATH_H

class fc_math

{

public:

fc_bogenm();

fc_grad();

virtual ~fc_math();

protected:

private:

};

#endif // FC_MATH_H

fc_math.cpp

-------------------------------------------

#include "fc_math.h"

// Umwandlung Grad in Bogenmass

double fc_bogenm(double grad)

{

return (grad / 180.0 * 3.1415927);

}

// Umwandlung Bogenmass in Grad

double fc_grad(double bogenmass)

{

return (bogenmass / 3.1415927*180.0);

}

Geschrieben

Eine ordentliche Fehlerbeschreibung ist immer hilfreich. Mit "irgendwie klappt es nicht" kann man nichts anfangen.

Wenn du deine Methoden außerhalb der Klassendefinition definierst, musst du den Klassennamen dazuschreiben:

double fc_math::fc_bogenm(double grad)

Und lass den virtuellen Destruktor weg, das ist Unsinn.

Geschrieben

aufruf: fc_math::fc_bogenm(45.0)

führt zu folgenden fehlermeldungen:

c++ forbids declaration of "fc_bogenm" with no type

c++ forbids declaration of "fc_grad" with no type

no matching function for cal to "fc_math::fcbogenm(double)"

Geschrieben
aufruf: fc_math::fc_bogenm(45.0)
Dir ist klar, dass du erst eine Instanz dieser Klasse erstellen musst, bevor du die Methode aufrufen kannst?

no matching function for cal to "fc_math::fcbogenm(double)"
So heißt die Methode ja auch nicht.
Geschrieben

#include <cstdlib>

#include <iostream>

#include <math.h>

#include <stdio.h>

#include <K:\Programmieren\c++\Bibliotheken\fc_math\fc_math.h>

using namespace std;

int main()

{

cout << "\n" << fc_math::fc_bogenm(45.0);

}

Geschrieben

Hi,

fc_bogenm();

du hast eine Funktion, die nichts erwartet, du übergibst aber...

fc_bogenm(double);

Außerdem musst du erst ein Objekt erstellt, was du nicht tust. Deine Syntax ist falsch. Richtig wäre:


...

using namespace std;


// Ein Objekt blah vom Typ fc_math erstellen...

fc_math blah;


int main()

{


cout << "\n" << blah.fc_bogenm(45.0);


} 

Geschrieben
und wie mache ich z.b. fc_bogenm static ?

Indem du in der Klassendefinition static davorschreibst.

Beachte auch carstenjs Hinweis: In der Klassendefinition hast du deine Methoden ohne Parameter deklariert, definiert hast du sie aber mit einem double-Parameter. Dass muss einheitlich sein.

Geschrieben

ich glaube, ich muss mir da erst noch ein bißchen anlesen..

ich dachte man könnte die funktionen einfach auslagern, dann im progi dazuladen, um sie dann mit ihrem "normalen" namen zu nutzen

Geschrieben
ich dachte man könnte die funktionen einfach auslagern, dann im progi dazuladen, um sie dann mit ihrem "normalen" namen zu nutzen
Was meinst du mit "normalem Namen"? War fc_bogenm vorher eine freie Funktion, und du hast sie nur zum "Auslagern" in eine Klasse gesteckt?

Wenn du eine Methode einer Klasse aufrufen willst, musst du das wie gezeigt machen. Das hat nichts damit zu tun, ob diese Klasse in einer eigenen Codedatei samt Header liegt.

steht irgendwo schritt für schritt erkälrt, wie ich einen headerfile anzulegen habe ?
Dein Headerfile ist völlig in Ordnung, wenn man davon absieht, dass die Signaturen der Methoden nicht auf die Definitionen passen.

Zeig doch mal, wie dein ganzes Programm ohne "Auslagern" aussehen würde. Vielleicht lässt sich dann nachvollziehen, wo das Verständnisproblem liegt.

Geschrieben

#include <cstdlib>

#include <iostream>

#include <math.h>

#include <stdio.h>

#include <K:\Programmieren\c++\Bibliotheken\fc_math\fc_math .h>

using namespace std;

// Umwandlung Grad in Bogenmass

double fc_bogenm(double grad)

{

return (grad / 180.0 * 3.1415927);

}

int main()

{

cout << "\n" << fc_bogenm(45.0);

}

Geschrieben
also wenn ich ehrlich bin, hat es mein compiler automatisch angelegt :rolleyes:
Ein Compiler legt keine Codedateien an, allenfalls tut das deine Entwicklungsumgebung. Das ist dann aber ein Bedienproblem.

fc_math.h sollte so aussehen:

#ifndef FC_MATH_H
#define FC_MATH_H

double fc_bogenm(double grad);

#endif // FC_MATH_H[/code] Und fc_math.cpp so:
[code]double fc_bogenm(double grad)
{
return (grad / 180.0 * 3.1415927);
}

Geschrieben

Hi,

wobei ich mich frage, was du (@cadman) eigentlich genau machen möchtest?

Willst du Objektorientierung lernen, oder "einfach" nur deine Aufgabe lösen, mit Auslagerung in einer Headerdatei?

Das, was du jetzt hast, funktioniert zwar, hat aber mit Objektorientierung nichts zu tun.

Geschrieben

Erst einmal danke für die Hilfe

Ich stecke halt noch ganz am Anfang und teste dieses und jenes.

Aber mathematische Funktionen muss man doch nicht in eine Klasse legen, wo liegt der Vorteil ?

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...