string.h included aber string wird nicht erkannt ?



  • hallo zusammen,
    ist mein erster beitrag hier. zu mir: ich heisse Eugen Machold und bin elektrotechnikstudent, im moment in tokyo.
    sorry wenn ich euch mit so ner dummen frage belästige aber ich steh mir scheinbar gerade auf der leitung. ich habe ein string include in einem h-file gemacht:
    #include<string> aber der compiler (Visual C++ Express Edition) meckert, dass er string nicht kennt. also er fordert mich auf ; vor die stringvariable zu setzen?
    ich hab jetzt ne weile probiert werde aber einfach nicht schlau draus.
    hat einer von euch ne idee?

    gruss
    eugen



  • Wenn du deinen Quellcode zeigen würdest, wäre es leichter auf deine Frage zu antworten.



  • such dir eine der folgenden Möglichkeiten aus:

    //a - direkt Namespace angeben:
    std::string text;
    
    //b - using Deklaration
    using std::string;
    string text;
    
    //c - using Direktive
    using namespace std;
    string text;
    

    (die C++ Bibliotheken liegen im Namensraum 'std', also mußt du den entweder explizit angeben oder die Namen per "using" in den globalen Namensraum importieren)



  • hast ja recht aber ich weiss nicht ob der wirklich weiterhilft:

    /* where is the camera located													*/
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<math.h>
    #include<ctime>
    
    string camLoc = "front";	/* camera location on robot (left, front, right)	*/
    
    int x_tmp = 5;				/* x_size of correlation window		default 5		*/
    int y_tmp = 3;				/* y_size of correlation window		default 3		*/
    int x_offset = 320;        	/* X direction search range [ -x_offset and 0 ]		*/
    int y_offset = 0;  			/* Y direction search range [ -y_offset, y_offset ] */
    
    /* camera and search range settings												*/
    double d = 120.0;           /* distance between the cameras [mm] default 120mm	*/
    double f =  4.0;			/* focal length of lens [mm] default 4mm			*/
    double pixel_to_mm = 0.01;	/* conversion pixel to mm default 0.02				*/
    							/* 0.01 for raytracer pictures with 72dpi			*/
    
    /* To get better results we limit the range  of camera							*/
    int min_range = 500;        /* minimum distance [mm]  default 500				*/
    int max_range = 10000;      /* maximum distance [mm]  default 10000				*/
    

    Fehlermeldung

    e:\developmentunderwindows\objectfollower\config.h(10) : error C2146: syntax error : missing ';' before identifier 'camLoc'
    e:\developmentunderwindows\objectfollower\config.h(10) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    e:\developmentunderwindows\objectfollower\config.h(10) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    e:\developmentunderwindows\objectfollower\config.h(10) : error C2440: 'initializing' : cannot convert from 'const char [6]' to 'int'
    


  • Wie CStoll schon geschrieben hat:

    CStoll schrieb:

    such dir eine der folgenden Möglichkeiten aus:

    //a - direkt Namespace angeben:
    std::string text;
    
    //b - using Deklaration
    using std::string;
    string text;
    
    //c - using Direktive
    using namespace std;
    string text;
    

    (die C++ Bibliotheken liegen im Namensraum 'std', also mußt du den entweder explizit angeben oder die Namen per "using" in den globalen Namensraum importieren)

    und lass das ".h" weg, z.B.

    #include <string>
    


  • wow, ihr seid vielleicht schnell.
    danke hab grad nicht mehr dran gedacht.
    besten dank.



  • der Datentyp "string" befindet sich nicht in der <string.h> (=<cstring> - C-Routinen zur char*-Verarbeitung), sondern in der <string> (C++ Stringklasse). Und ansonsten solltest du statt der alten C-Header deren C++-Äquivalent (<cstdio>,<cstdlib> und <cmath>) verwenden.


Anmelden zum Antworten