Problem mit einer Klasse
-
hallo,
also ich wollte einfach mal probieren mti einer klasse umzugehen und habe dabei das hier geschrieben
#include<iostream> using namespace std; class meine{ public: float kapazitaet(float Q,float U) { float C; C=Q/U; return C; }; float energie(float C,float U) { float E; E=1/(2.0)*C*U*U; return E; }; }; int main() { meine test; float Ladung; float Spannung; cout<<"Dieses Programm berechnet die Kapazitaet und den Energieinhalt eines Kondensators"<<endl; cout<<"Bitte geben sie die Ladung und Spannung ein"<<endl; cout<<"Ladung: "; cin>>Ladung; cout<<"Spannung: "; cin>>Spannung; cout<<"Die Kapazitaet des Kondensators betraegt "<<test.kapazitaet(Ladung,Spannung)<<" Farad"<<endl; cout<<"Der Energieinhalt des Kondensators beträgt "<<test.energie(kapazitaet(Ladung,Spannung),Spannung)<<" Joule"<<endl; system("Pause"); }so leider kommt in der Zeile 54 immer folgener fehler:
bung.c:54: error: `kapazitaet' undeclared (first use this function)
bung.c:54: error: (Each undeclared identifier is reported only once for each function it appears in.)
:: === Build finished: 2 errors, 0 warnings ===aber er kennt doch bereits die funktion kapazitaet oder verstehe ich da was falsch., wenn ich es ohne klasse mache, dann läuft das programm einwandfrei, aber mit nicht mehr
-
Hallo
ja aber du kannst du Methode nicht einfach so hinschreiben.
Du kannst aber den Wert zwischenspeichernfloat C = test.kapazitaet(Ladung,Spannung) float E = test.energie(C,Spannung)bis bald
akari
-
aber gucke ma... so funktioniert es doch acuh prima
#include<iostream> using namespace std; float kapazitaet(float Q,float U) { float C; C=Q/U; return C; }; float energie(float C,float U) { float E; E=1/(2.0)*C*U*U; return E; }; int main() { float Ladung; float Spannung; cout<<"Dieses Programm berechnet die Kapazitaet und den Energieinhalt eines Kondensators"<<endl; cout<<"Bitte geben sie die Ladung und Spannung ein"<<endl; cout<<"Ladung: "; cin>>Ladung; cout<<"Spannung: "; cin>>Spannung; cout<<"Die Kapazitaet des Kondensators betraegt "<<kapazitaet(Ladung,Spannung)<<" Farad"<<endl; cout<<"Der Energieinhalt des Kondensators beträgt "<<energie(kapazitaet(Ladung,Spannung),Spannung)<<" Joule"<<endl; system("Pause"); }an der stelle hier
<energie(kapazitaet(Ladung,Spannung),Spannung)<<" Joule"<<endl;wird doch der wert C auch berechnet durch die ein andere funktion und dann kommt nur noch der andere parameter "Spannung" mit hinten dran...
wieso geht das nicht auch mit der klasse... die rechnung bleibt ja schließlich gleich.oder sehe ich das falsch.udn noch ne frage wo müsste ich deinen lösungsansatz im programm dann örtlich hinschreiben??
-
btw:
Klassen sollen eigentlich eine menge an dingen, wie z.B.: Massen oder Autos darstellen...
Eine einfache Rechnung kannst du auch als Funktion verwirklichen...
-
ja das is ja erstma egal. fuktionieren muss es auch so

-
Hallo
Wenn du es unbedingt doppelt willst, must eben alles doppeln
cout<<"Der Energieinhalt des Kondensators beträgt "<<test.energie(test.kapazitaet(Ladung,Spannung),Spannung)<<" Joule"<<endl;bis bald
akari
-
es geht
du bist ein schatz akari
-
#if !defined(CONDENSER_H__INCLUDED) #define CONDENSER_H__INCLUDED class condenser { public: condenser(const float q, const float u) : m_q(q), m_u(u) {} public: float capacity() const { return (m_q / m_u); } float energy() const { return (1 / 2.0 * capacity() * m_u * m_u); } private: float m_q; float m_u; }; #endif // CONDENSER_H__INCLUDED... so macht da auch eine Klasse ein wenig mehr Sinn...
#include <iostream> #include "condenser.h" int main() { std::cout << "Kapazitaet/Energieinhalt Kondensator Berechner V0.1" << std::endl; std::cout << "Ladung: " << std::flush; float charge = 0.0f; std::cin >> charge; std::cout << "Spannung: " << std::flush; float tension = 0.0f; std::cin >> tension; condenser inst(tension, charge); std::cout << "Kapazitaet: " << inst.capacity() << std::endl; std::cout << "Energieinhalt: " << inst.energy() << "J" << std::endl; }...