Невозможно преобразовать строку в char * для аргумента 1 - PullRequest
0 голосов
/ 01 марта 2019

У меня проблема с моим кодом C ++ для преобразования строки чисел в базе b в другую базу n.Моя ошибка заключается в следующем:

не может преобразовать 'std :: __ cxx11 :: string {aka std :: __ cxx11 :: basic_string }' в 'char *' для аргумента '1' в'int base_to_decimal (char *, int)'

Я использую g ++ для компиляции, и я уже некоторое время, поэтому я сначала подумал, что знаю, в чем проблема.Он говорит, что метод base_to_decimal принимает два аргумента: один типа char* и один типа int.Поэтому все, что мне нужно сделать, чтобы исправить мою проблему, это изменить аргумент char* на string, верно?

Ну, я посмотрел, и код для рассматриваемой функции:

int base_to_decimal(std::string input_base, int base)

Так что этот метод ДОЛЖЕН ожидать string, но по какой-то причине, когда я передаю string, он злится на меня.

Если кто-то может помочь мне разобраться в этомэто было бы фантастически.Я использую g ++ 7.3.0 и все это использую в Linux Mint 19.1.

(EDIT)

Основной метод

image

Функции

image

Таблица

image

1 Ответ

0 голосов
/ 01 марта 2019

Вы написали пользовательскую декларацию в строке 46 вашего основного сообщения:

 int base_to_decimal(char * input_base, int base)

Но в файле функций, в котором вы определили свою функцию, у вас есть:

int base_to_decimal(std::string input_base, int base)

Вот почему вы не должны писать встроенные объявления для внешних функций, а вместо этого помещать объявления в заголовочный файл.#include в файле, где функция определена позже, гарантирует, что определение соответствует объявлению, которое ожидают другие файлы.И точно так же он обеспечивает, что все эти другие файлы пытаются использовать функцию так, как она на самом деле закодирована.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...