错误:从'const char*'到'char'的无效转换[-fpermissive]

Var*_*yas 1 c++

#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
Run Code Online (Sandbox Code Playgroud)

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

g ++ -c test.cpp test.cpp:在函数'int main()'中:test.cpp:20:10:错误:从'const char*'到'char'的无效转换[-fpermissive]

pax*_*blo 11

"i" 它不是一个字符,它是一个字符数组,它基本上衰变为指向第一个元素的指针.

你几乎肯定想要'i'.

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

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


Man*_*rse 8

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

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

char文字只是chars