-3

我的 C++ 代码在将基数 b 中的一串数字转换为另一个基数 n 时遇到问题。我的错误如下:

无法将参数 '1' 的 'std::__cxx11::string {aka std::__cxx11::basic_string<char>}' 转换为 'char*' 到 'int base_to_decimal(char*, int)'</p>

我是用g++编译的,也有一段时间了,所以一开始我以为我知道问题出在哪里。它表示该方法base_to_decimal接受两个参数:一个是 type char*,一个是 type int。因此,解决我的问题所需要做的就是将char*参数更改为 a string,对吗?

好吧,我看了,有问题的函数的代码是:

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

所以这个方法应该期待 a string,但由于某种原因,当我传入 a 时string,它会生我的气。

如果有人能帮我解决这个问题,那就太好了。我正在使用 g++ 7.3.0,并在 Linux Mint 19.1 上运行所有这些。

(编辑)

主要方法

图片

功能

图片

桌子

图片

4

1 回答 1

0

您已经在 main 的第 46 行编写了自定义声明:

 int base_to_decimal(char * input_base, int base)

但是在您定义函数的函数文件中,您有:

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

这就是为什么您不应该为外部函数编写内联声明,而是将声明放在头文件中。#include在稍后定义函数的文件中,确保定义与其他文件所期望的声明相匹配。同样,它强制所有其他文件都试图以实际编码的方式使用该函数。

于 2019-03-01T04:22:11.597 回答