fstream + boost



  • Hi,

    #pragma once
    
    #include <string>
    #include <boost/filesystem/fstream.hpp>
    using namespace boost;
    using namespace filesystem;
    using namespace std;
    
    int main()
    {
    	fstream f("");
    	return 0;
    }
    

    1>d:\test\main.cpp(11) : error C2872: 'fstream' : ambiguous symbol
    1> could be 'c:\program files\microsoft visual studio 8\vc\include\iosfwd(714) : std::basic_fstream<_Elem,_Traits> std::fstream'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> or 'c:\boost\include\boost-1_33_1\boost\filesystem\fstream.hpp(182) : boost::filesystem::fstream'

    ???



  • Na dann würde ich doch mal explizit angeben, welches von beiden du meisnt. Das passiert eben, wenn man einfach alle Namensräume einbindet.



  • Ich will natürlich den 1337 boost fstream. Ich wusste nur noch, dass <string> mir auch <fstream> reinhaut 😞



  • Ahso. <boost/filesystem/fstream.hpp> haut mit den <fstream> rein. Mmmmh. Was sol ich jetzt machen? Immer explizit filesystem::fstream schreiben?



  • Kurze Antwort: Ja.

    Lange Antwort: Alternativ kannst du auch das 'using namspace std;' weglassen und nur die Namen in den globalen Namensraum ziehen, die du wirklich benötigst (z.B. per 'using std::string;').


Anmelden zum Antworten