std::string(argv[1]) als Parameter einer Funktion funktioniert nicht!
-
Image(const std::string&); // Konstruktor . . . Magick::Image curImage(std::string(argv[1])); // funktioniert nicht! Magick::Image curImage((std::string)argv[1]); // geht std::string s = std::string(argv[2]); Magick::Image curImage(s); // geht auchHallo Forum,
warum funktioniert der erste Aufruf nicht? (Liefert folgende Fehlermeldung beim Aufruf einer Methode dieser Klasse:
error: request for member `monochrome' in `curImage', which is of non-class type `Magick::Image ()(std::string*)')Vielen Dank im voraus für die Hilfe,
Stefan
-
die erste Variante wird vom Compiler nicht als Variablen-Definition mit Ctor-Aufruf interpretiert, sondern als Funktions-Deklaration.
Übrigens ist der Ctor von String implizit, also sollte eigentlich auch folgendes gehen:
Magick::Image curImage(argv[1]);
-
Gemeine Sache:
Der Compiler interpretiert die Zeile ohne überflüssige Klammern wie folgt:Magick::Image curImage(std::string argv[1]);Nach dem Gesetz, dass alles, was wie eine Deklaration aussieht, auch eine Deklaration ist, deklariert diese Zeile eine Funktion namens curImage, die ein Magick::Image zurückgibt und ein Array von std::strings als Parameter verlangt.