Я пишу основную командную оболочку на C ++ и не смог решить эту проблему, несмотря на большой поиск.Когда я пытаюсь скомпилировать свою программу, я получаю сообщение об ошибке:
ошибка: нет соответствующей функции для вызова 'std :: vector:: pop_back (std :: __cxx11 :: string &) 'times.pop_back (tmp);
Код, о котором идет речь:
int runArgs(char** args, std::vector<std::string> &histData, std::vector<std::string> ×) {
...
// it's not a built-in command, so...
else {
auto before = std::chrono::high_resolution_clock::now();
if(fork()) { // I'm the parent
wait(NULL);
} else { // I'm the child
execvp(args[0], args);
// getting here means exec didn't work
std::cerr << "The program terminated because " << strerror(errno) << std::endl;
}
auto after = std::chrono::high_resolution_clock::now();
std::chrono::duration<double> dur = after - before;
auto x = std::chrono::duration_cast<std::chrono::seconds>(dur);
std::string tmp = std::to_string(x.count());
times.pop_back(tmp);
}
Кажется, что tmp имеетбыл объявлен как указатель, и я пытаюсь дать моему вектору неправильный тип данных.Тем не менее, я не использую никаких указателей в этом разделе кода.Я пытался использовать вектор двойников, но получаю такую же ошибку.Это как-то связано с передачей вектора по ссылке?Или я не понимаю, что возвращает chrono :: duration :: count?Или это что-то совсем другое?