Namespace Problem



  • hi!

    Ich hab mein Problem mit namespaces...
    Ich habe eine Funktion die ich auslagern wollte da ich sie in mehreren Programmen benutze. Also habe ich einen Header erstellt und die Funktion rauskopiert. Jetzt meckert er aber das z.b der typ string nicht bekannt ist.
    Die <string.h> ist aber im Hauptprogramm eingefügt. Irgendwo hab ich gelesen das das an dem namespace liegen kann das er sie nicht findet... (ich hab aber weder im hauptprogramm noch sonstwo namespaces benutzt)
    Wie bekomme ich jetzt meine funktion in den gleichen namespace wie mein hauptprogramm und string.h ?

    danke
    Till



  • ich hab aber weder im hauptprogramm noch sonstwo namespaces benutzt

    Könnte vielleicht das dein Problem sein? string.h gab es glaub ich auch nie, bzw. das ist das heutige cstring.



  • ok dann halt cstring
    ist halt nur ein beispiel. Da sind noch mehr Librarys die er nur kennt wenn ich die Funktion direkt ins Hauptprogramm kopiere (und nicht über ne Header einfüge).
    Ganz allgemein: Warum kennt meine ausgelagerte funktion die Header nicht die ich im Hauptprogramm eingeladen habe?



  • Genau, das ist das heutige cstring. Dort gibt es aber keinen Datentypen "string". Der steht im Header string, also #include<string>. Dort ist es dann im Namespace std. Also einzugrif darauf entweder mit vorangehenden using namespace std oder mit std::string.

    Dann sein das der dir den Datentyp string in deinem Hauptprogram über eine anderes Header rein bekommen hat, bei VC++ bekommt man den Datenty schon über das #include <iostream>.

    Gruß
    Entyl Sa



  • also..

    mein hauptprogramm

    ...
    #include <fstream> 
    #include <string> 
    #include <iostream> 
    
    #include "readconfig.h"
    
    using namespace std; 
    
    ...
    

    readconfig.h header:

    signed long int readconfig(char* ConfigString, int WortLaenge);
    

    und readconfig.cpp:

    #include "readconfig.h"
    
    signed long int readconfig(char* ConfigString, int WortLaenge)
    {
    	string Zeile;
    	fstream Datei;
    
               ...
    }
    

    Was muss ich jetzt tun damit er in readconfig() die Header kennt?



  • #include <fstream>
    #include <string>
    #include "readconfig.h"
    
    signed long int readconfig(char* ConfigString, int WortLaenge)
    {
    	string Zeile;
    	fstream Datei;
    
               ...
    }
    


  • @Entyl_Sa
    so allein gehts nicht...
    aber wenn ich noch ein

    using namespace std;

    dazuschreibe gehts.
    danke. Das nächste denk ich vorher nach. 😡


Log in to reply