错误:从“常量字符*”到“字符”[-允许]的转换无效

error: invalid conversion from ‘const char*’ to ‘char’ [-fpermissive]

本文关键字:字符 允许 无效 转换 常量 常量字符 错误      更新时间:2023-10-16
#include<stdio.h>
#include<iostream>
#include<fstream>
#include<string.h>
using namespace std;
class base {
 public:
    int lookup(char c);
}; // class base
int base::lookup(char c)
{
    cout << c << endl;
} // base::lookup
int main() {
    base b;
    char c = "i";
    b.lookup(c);
} // main

在编译上面的代码时,我得到以下错误:

g++ -c test.cpp test.cpp: 在函数 'int main()' 中: test.cpp:20:10: 错误:从"常量字符*"到"字符"的转换无效 [-允许]

尝试替换

 char c = "i";

 char c = 'i';
"i"

是一个字符,它是一个字符数组,基本上衰减到指向第一个元素的指针。

你几乎肯定想要'i'.

或者,您可能实际上希望基于多个字符进行查找,在这种情况下,您应该使用 "i"但在这种情况下,无论是在定义c还是在 base::lookup() 方法中,类型都是const char *而不仅仅是char

但是,如果是这种情况,我会认真考虑使用 C++ std::string 类型而不是 const char * 。这可能不是必需的,但使用C++字符串可能会使您的生活更轻松,具体取决于您要操作实际值的程度。

"i"是一个字符串文字,你可能想要一个字符文字:'i'

字符串文本是以 null 结尾的 const char 数组(在该表达式中使用时隐式转换为 char const*,因此会出现错误)。

字符文字只是char s