Hallo,
ich hoffe die Frage ist hier richtig und auch noch nicht gestellt. Zumindest habe ich nichts brauchbares zu meinen Suchbegriffen gefunden.
Ich habe folgendes Stückchen Code versucht unter MSC und MinGW GCC zu kompilieren und dabei festgestellt, dass der GCC es nicht kann/will.
Unter MinGW (g++ (GCC) 4.3.3-dw2-tdm-1) kommt folgende Fehlermeldung bei absolut demselben Sourcecode (die hervorgehobenen Stellen sind die Zeilen, welche in der Fehlermeldung angesprochen werden):
Als Workaround habe ich bisher immer das Objekt vorher erzeugt und dann übergeben, was ohne Probleme funktioniert.
Nun meine Frage: Weiss jmd warum das so ist, bzw. gibt es einen Grund warum dieses Kontrukt vom GCC abgelehnt wird oder andersherum warum es Microsoft erlaubt?
Vielen Dank im Vorraus.
Mit freundlichen Grüßen
m0zi
ich hoffe die Frage ist hier richtig und auch noch nicht gestellt. Zumindest habe ich nichts brauchbares zu meinen Suchbegriffen gefunden.
Ich habe folgendes Stückchen Code versucht unter MSC und MinGW GCC zu kompilieren und dabei festgestellt, dass der GCC es nicht kann/will.
Code:
#include <string>
using namespace std;
void tueWas(string& str);
int main(void)
{
tueWas(string("Hallo"));
return 0;
}
void tueWas(string& str)
{
printf(str.c_str());
}
Unter MinGW (g++ (GCC) 4.3.3-dw2-tdm-1) kommt folgende Fehlermeldung bei absolut demselben Sourcecode (die hervorgehobenen Stellen sind die Zeilen, welche in der Fehlermeldung angesprochen werden):
Code:
g++ -O0 -g3 -Wall -c -fmessage-length=0 -osrc\Test.o ..\src\Test.cpp
..\src\Test.cpp: In function 'int main()':
..\src\Test.cpp:9: error: invalid initialization of non-const reference of type 'std::string&' from a temporary of type 'std::string'
..\src\Test.cpp:5: error: in passing argument 1 of 'void tueWas(std::string&)'
Code:
int main(void)
{
string str("Hallo");
tueWas(str);
return 0;
}
Vielen Dank im Vorraus.
Mit freundlichen Grüßen
m0zi