#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]
答案 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