• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[C++] filesystem no matching for operator !=

Object Storage Arubacloud
0 głosów
1,195 wizyt
pytanie zadane 3 lutego 2019 w C i C++ przez Hiskiel Pasjonat (22,830 p.)
edycja 3 lutego 2019 przez Hiskiel

Cze.

Próbuję rozwiązać problem, który objawia się tym, że nie mogę napisać żadnego programu z elementami filesystem, gdyż wywala mi błąd:

[A bit of crap]
D:/mingw-w64/i686-7.3.0-posix-dwarf-rt_v5-rev0/mingw32/lib/gcc/i686-w64-mingw32/8.1.0/include/c++/bits/fs_path.h:237:47: error: no match for 'operator!=' (operand types are 'std::filesystem::__cxx11::path' and 'std::filesystem::__cxx11::path')
    || (__p.has_root_name() && __p.root_name() != root_name()))
                               ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
[A lot of crap]

Szukałem trochę rozwiązań, widziałem jakieś trunki itd, ale nie za bardzo wiem jak tego użyć, co to w ogóle jest itd.

 

Gdyby ktoś wiedział jak to naprawić byłbym wdzięczny.

 

Pozdrawiam.

 

PS

Kod:

#include <fstream>                     
#include <iostream>                    
#include <filesystem>                  
                                       
namespace fs = std::filesystem;        
                                       
int main() {                           
     fs::create_directories("foo/bar");    
}                                      
                                       

Kompilacja:

g++ -std=c++1z -Wall -Wextra -Wunused  -Wmisleading-indentation -Wduplicated-cond -Wduplicated-branches -Wlogical-op -Wuseless-cast -pedantic-errors -O3 main.cpp -lstdc++fs

Kompilator:

g++ (i686-posix-dwarf-rev0, Built by MinGW-W64 project) 8.1.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

 

1 odpowiedź

0 głosów
odpowiedź 3 lutego 2019 przez niezalogowany

https://sourceforge.net/p/mingw-w64/bugs/737/

Spróbuj pobrać nowszą wersję MinGW. Kod powinien wyglądać tak:

#include <fstream>                     
#include <iostream>                    
#include <filesystem>                  
                                        
namespace fs = std::filesystem;        
                                        
int main() {                           
     fs::create_directories(fs::path("foo") / fs::path("bar"));    
}                                      
komentarz 3 lutego 2019 przez Hiskiel Pasjonat (22,830 p.)
Nie chodzi tu o kod, tymbardziej, że z tego co pamiętam tam jest automatyczna konwersja.

I właśnie nie wiem co zrobić z tym trunkiem. To tylko plik PKGBUILD. Co mam z nim zrobić?
komentarz 3 lutego 2019 przez Hiskiel Pasjonat (22,830 p.)
Swoją drogą, tam nie miało być "foo"/bar tylko "foo/bar"
komentarz 4 lutego 2019 przez niezalogowany

Możesz zainstalować VS, albo Clang. Z VS na pewno nie ma takich problemów.

Tak poprawiony kod jest sensowniejszy. Przedtem myślałem, że chcesz sprawdzić jak działa operator / std::filesystem::path. Automatyczna konwersja nie będzie działać jeżeli priorytet nakazuje wykonanie operatora / dla const char[].

Podobne pytania

0 głosów
1 odpowiedź 154 wizyt
0 głosów
1 odpowiedź 454 wizyt
0 głosów
2 odpowiedzi 6,721 wizyt
pytanie zadane 25 lipca 2016 w C i C++ przez MatrixBMW Początkujący (360 p.)

92,575 zapytań

141,424 odpowiedzi

319,650 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...