"Default argument given for parameter 2 of function", mimo iż domyślny argument jest tylko w deklaracji.

0

Witam.

Mam błąd:

Utils/Utils.h:15:122: error: default argument given for parameter 2 of 'std::pair<int, std::__cxx11::basic_string<char> > choice(const string&, const std::unordered_map<int, >std::__cxx11::basic_string<char> >&)' [-fpermissive]
std::pair<int, std::string> choice(const std::string&, const std::unordered_map<int, std::string>& = {{1, "Y"}, {2, "N"}});

Gdzie w deklaracji przekazuję domyślny argument, w definicji już nie, więc błędu podobno być nie powinno.

Utils.h
std::pair<int, std::string> choice(const std::string&, const std::unordered_map<int, std::string>& = {{1, "Y"}, {2, "N"}});

Utils.cpp
std::pair<int, std::string> choice(const std::string &text, const std::unordered_map<int, std::string> &map) { ... }

Próbowałem również na odwrót, czyli domyślny argument w definicji, nie deklaracji, ale wtedy dostaję błąd:

main.cpp:103:53: error: too few arguments to function 'std::pair<int, std::__cxx11::basic_string<char> > choice(const string&, const std::unordered_map<int, >std::__cxx11::basic_string<char> >&)'
auto i = choice("Do you want to delete windows?");

przy wywołaniu.

Nie wiem w czym może leżeć problem, ponieważ w każdym wątku jaki widziałem o tym błędzie odpowiadający piszą, że domyślny argument powinien być w deklaracji albo w definicji, nie w obu naraz.

Z góry dziękuję za pomoc.

Pozdrawiam.

0

Windows 7 Proffesional x86
Intel Core 2 Duo E7500 2 x 2.93GHz

g++ (i686-posix-dwarf-rev0, Built by MinGW-W64 project) 7.3.0
Copyright (C) 2017 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.

Nie wiem jakie jeszcze informacje mógłbym podać.

0

Podsumujmy: kod z https://wandbox.org/permlink/wCVmszvJcgObhnNW nie kompiluje się z gcc 7.3 w trybie C++17?

0

Nie ważne, teraz okryłem w czym jest błąd. W main.cpp includuję AccountSystem.h oraz Utils.h, gdzie AccountSystem.h również includuje Utils.h.
Zapomniałem dodać Head Guarda do Utils.h, przez co podwójnie była deklaracja z domyślnymi argumentami.
Dziękuję za pomoc.
Pozdrawiam, miłego dnia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1