нет соответствующей функции для вызова ‘std::basic_ifstream‹char›::basic_ifstream(std::__cxx11::string&)’ ifstream myfile(filename);

Я использую Cmake и Ctest, чтобы попробовать и протестировать свой код на Travis CI. Если я использую cmake для локального тестирования, я не получаю никаких ошибок и могу выполнять свои тесты. При запуске теста через Travis CI я получаю множество ошибок, таких как эта:

error: no matching function for call to ‘std::basic_ifstream<char>::basic_ifstream(std::__cxx11::string&)’

ifstream myfile(filename);

Имя файла представляет собой строку. Использует ли Трэвис компилятор другой версии по сравнению с моей локальной установкой?


person mbh16_x    schedule 01.05.2020    source источник
comment
Убедитесь, что вы включили <fstream>.   -  person cigien    schedule 01.05.2020
comment
Наверное дело в версии. Старые версии стандартной библиотеки принимали там только const char*.   -  person john    schedule 01.05.2020
comment
знаете ли вы, как использовать более новую версию Travis CI?   -  person mbh16_x    schedule 01.05.2020
comment
Я собираюсь попробовать это stackoverflow.com/questions /35110123/.   -  person mbh16_x    schedule 01.05.2020
comment
Ваш код C++ ›= 11, очевидно, вы должны сказать Трэвису, что вам нужен определенный компилятор (и/или флаги).   -  person zaufi    schedule 02.05.2020


Ответы (1)


Версия Travis CI C++ нуждалась в обновлении.

вот полный .travis.yml

language: cpp
compiler: gcc

os: linux

addons:
  apt:
    sources:
      - ubuntu-toolchain-r-test 
    packages:
      - g++-7
compiler:
  - clang
script:
- export CC=gcc-7
- export CXX=g++-7
- gcc -v && g++ -v && cmake --version
- cmake ./Computing\ project/Test\ Mains/

person mbh16_x    schedule 02.05.2020