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

时间:2012-08-19 12:43:45

标签: 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

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

  

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

3 个答案:

答案 0 :(得分:12)

尝试替换

 char c = "i";

 char c = 'i';

答案 1 :(得分:10)

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

你几乎肯定想要'i'

或者,您实际上可能希望基于多个字符进行查找,在这种情况下,您应该使用"i"但是其中的类型在定义const char *char方法时,案例均为c而非base::lookup()

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

答案 2 :(得分:7)

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

字符串文字是const char的空终止数组(在该表达式中使用时隐式转换为char const*,因此出错。)

字符文字只是char s