Beispiel in C++ Primer will nicht

11/11/2013 14:34 Katzenstreu#16
Um einen neuen Thread zu vermeiden, stelle ich meine Frage mal wieder in diesem Thread :)

Ich habe schon wieder ein Problem:
Auf Seite 93 ist wieder ein Beispiel, welches bei mir einfach nicht will..

Code:
#include "stdafx.h"
#include <iostream>
#include <string>

int main()
{
	std::string s("Hello World!!!");

	for(auto &c : s) // Für jedes Zeichen in s
		c = toupper(c);
	std::cout << s << std::endl;
	system("PAUSE");
}
Als Fehler beim compilieren erscheint:

Quote:
1>3.2.3e3.6.cpp(9): error C2143: Syntaxfehler: Es fehlt ',' vor ':'
1>3.2.3e3.6.cpp(9): error C2530: 'c': Verweise müssen initialisiert werden
1>3.2.3e3.6.cpp(9): error C3531: "c": Ein Symbol, dessen Typ "auto" enthält, muss einen Initialisierer aufweisen.
Um ehrlich zu sein, mir selber kann ich mir dabei nicht helfen weshalb ich mich schon vorab für jede Hilfe bedanke :o
11/11/2013 15:07 Tasiro#17
Welchen Compiler nutzt du? Unterstützt dieser jenes Sprachkonstrukt?
11/11/2013 15:15 Katzenstreu#18
Quote:
Originally Posted by Tasiro View Post
Welchen Compiler nutzt du? Unterstützt dieser jenes Sprachkonstrukt?
Microsoft Visual C++ 2010
Weiß ich nicht, ich nehme mal an ja :p
11/11/2013 17:33 Hiris#19
Liegt am compiler, ist definitiv richtig klappt bei mir wunderbar, abgesehen davon dass C++ Primer eigentlich keine Fehler macht, und wozu #include "stdafx.h" ? Rausmachen
11/11/2013 17:37 Katzenstreu#20
Quote:
Originally Posted by Hiris View Post
Liegt am compiler, ist definitiv richtig klappt bei mir wunderbar, abgesehen davon dass C++ Primer eigentlich keine Fehler macht, und wozu #include "stdafx.h" ? Rausmachen
Aber genau den gleichen Code habe in in Dev-C++ versucht, dort tauchte auch ein Fehler. Und an dem "stdafx.h" liegt es nicht
11/11/2013 17:39 Hiris#21
Wie gesagt, dann hast du alte Versionen o.ä. Vs 2012 compiled das wie ne Biene.
Weiss jetzt nicht genau aber eigentlich müsste 2010 da auch keine Probleme mit haben, ich denk mal du hast da was kaputt gehauen *wegduck*

stdafx.h wird nicht benötigt für das Programm also wozu hast du es drin?
11/11/2013 17:54 Katzenstreu#22
Quote:
Originally Posted by Hiris View Post
Wie gesagt, dann hast du alte Versionen o.ä. Vs 2012 compiled das wie ne Biene.
Weiss jetzt nicht genau aber eigentlich müsste 2010 da auch keine Probleme mit haben, ich denk mal du hast da was kaputt gehauen *wegduck*

stdafx.h wird nicht benötigt für das Programm also wozu hast du es drin?
Mensch, was habe ich hier nun wieder zerstört :/
Kannst du mir eigentlich einen Compiler empfehlen?
Ich meine es nützt mir nichts einen Compiler zu benutzen, der, wie du sagst, wie eine Birne arbeitet.

Weil mich Visual Studio dazu zwingt und ich keine Lust habe es mit dem kleinen Tutorial auf Seite eins auszuschalten :p
11/11/2013 17:56 Hiris#23
Also ich nutze Visual Studio 2012 ultimate :o
11/11/2013 18:17 Katzenstreu#24
Quote:
Originally Posted by Hiris View Post
Also ich nutze Visual Studio 2012 ultimate :o
Dann installiere ich das mal dann, danke :o
11/11/2013 19:25 MrSm!th#25
DevC++ verwendet in der Standardauslieferung einen völlig veralteten Compiler.
Der Compiler von VS2010 unterstützt die range-based For-Loop, also das Konstrukt, das du da verwendest, noch nicht.

Bzw. Er unterstützt es, allerdings nur für Arrays und in einer nicht standardkonformen Syntax.
VS2012 unterstützt es.
11/11/2013 20:15 Padmak#26
Damit du nicht auf weiter Probleme stößt:
Installier gleich noch das November 2012 CTP dazu ([Only registered and activated users can see links. Click Here To Register...]), damit der größte Teil von C++11-Features unterstützt wird. Sonst musst du, falls im Primer mal Variadic Templates vorkommen, wieder hier fragen

Padmak
11/11/2013 20:21 Katzenstreu#27
Quote:
Originally Posted by MrSm!th View Post
DevC++ verwendet in der Standardauslieferung einen völlig veralteten Compiler.
Der Compiler von VS2010 unterstützt die range-based For-Loop, also das Konstrukt, das du da verwendest, noch nicht.

Bzw. Er unterstützt es, allerdings nur für Arrays und in einer nicht standardkonformen Syntax.
VS2012 unterstützt es.
Ich habe mir nun VS2013 installiert und nun geht auch alles :o
Ziemlich schade, dass ich wirklich Minutenlang nach dem Fehler gesucht habe..
Was solls :)
Wiedermal danke euch!
11/11/2013 20:39 snow#28
Der Primer hat übrigens immer ein kleines Symbol am Rand, das ein C++11 Feature anzeigt. Im Internet findest du Infos über den Stand der Implementierung der Features, z.B. hier: [Only registered and activated users can see links. Click Here To Register...]
Weiterhin viel Spaß beim Lernen. :)
11/12/2013 00:39 Nightblizard#29
Quote:
Originally Posted by snow911 View Post
Der Primer hat übrigens immer ein kleines Symbol am Rand, das ein C++11 Feature anzeigt. Im Internet findest du Infos über den Stand der Implementierung der Features, z.B. hier: [Only registered and activated users can see links. Click Here To Register...]
Weiterhin viel Spaß beim Lernen. :)
Der Link ist nicht ganz aktuell, er hat z.B. VS 2013 (was der TE nutzt) nicht aufgeführt.
Hier ein etwas ausführlicherer Link, was die VS Produkte anbelangt:
[Only registered and activated users can see links. Click Here To Register...]
11/12/2013 08:55 MrSm!th#30
Quote:
Originally Posted by Padmak View Post
Damit du nicht auf weiter Probleme stößt:
Installier gleich noch das November 2012 CTP dazu ([Only registered and activated users can see links. Click Here To Register...]), damit der größte Teil von C++11-Features unterstützt wird. Sonst musst du, falls im Primer mal Variadic Templates vorkommen, wieder hier fragen

Padmak
Das habe ich mir installiert, weil ich zu faul bin, vs12 zu deinstallieren.
Wenn er eh von vs10 umsteigt, sollte er direkt zur 2013 Version greifen, anstatt sich mit einem Beta Update zu begnügen.