Übergabe von Parametern in Funktionen

tommy07

Mitglied
Hallo,
habe ein Problem mit der Übergabe von Werten innerhalb eines Programmes.

In einer Datei befindet sich eine Funktion, die ein float zurückgibt.

Code:
float getpositiona(){
float a;
//...
cout << a;
return(a);
}

Auf diese Datei habe ich jetzt in einer anderen Datei zugegriffen.


Code:
# include "positiona.h"

#include<fstream.h>                 //Importieren der Programmpakete
#include <iostream.h>
#include <math.h>

float main(){
float a= getpositiona();

cout << endl << endl;
cout << a << endl;




return(0);
}

Es sind drei Probleme. Die beiden a's die ausgegeben werden, müssten doch identisch sein.
Jedoch wird bei dem erst a der richtige Wert ausgegeben und beim zweiten "1.2e+06".
Außerdem erhalte ich bei der Compilierung der ersten Datei eine Meldung
ERROR: UNresolved external '_main' reference from C:\...'
Liegt daran vielleicht der Fehler?

Das dritte Problem ist, dass, wenn ich in der ersten Datei irgenwelche Werte ändere oder ausgebe, sich an der Ausgabe nichts verändert.
Woran kann das liegen?
 
moin


Initialisiere "float a" in deiner Funktion mal mit nem Wert, z.B. "float a = 0;".
Und es gibt keinen Grund "float main()" zu nehmen, benutz besser "int main()".


mfg
umbrasaxum
 
Ich glaub das liegt an der Syntax vom return. Meiner Meinung nach sollte dass
Code:
return a;
heisen.

Der Fehler tritt auf weil das a im Hauptprogramm keinen Wert bekommt (es wird ja auch nichts zurückgegeben) und somit wird der Wert ausgegeben der gerade im Speicher auf der Adresse steht
 
Ich hab's mal ausprobiert und bei mir klappt da alles:

positiona.cpp:
Code:
#include <iostream>
   
   using namespace std;
   
   float getpositiona(void)
   {
   	float a;
   
   	a = 3.1417215f;
   	//...
   	cout << a;
   	return a;
   }
(geht auch mit 'return(a);')

main.cpp:
Code:
#include <iostream>
   #include "positiona.h"
   
   using namespace std;
   
   int main()
   {
   	float a = getpositiona();
   
   	cout << endl << endl;
   	cout << a << endl;
   
   
   	getchar();
   
   
   	return 0;
 }
Ich weiß ja nicht, mit welchem Compiler Du arbeitest, aber mein VisualStudio hatte gemeckert, weil ich die Funktion erst in eine Datei 'positiona.c' gepackt hatte und nicht 'positiona.cpp'. Daher wollte er es erst nicht als C++ kompilieren sondern nur als C und hat sich über die Verwendung von C++ - Elementen beschwert.
 
Zurück