这个问题在这里已有答案:
#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 回答
"i"
是一个字符串文字,你可能想要一个字面文字:'i'
.字符串文字是
const char
的空终止数组(在该表达式中使用时隐式转换为char const*
,因此出错) .char文字只是
char
s"i"
不是一个字符,它是一个基本上衰变为指向第一个元素的字符的字符数组 .你几乎肯定想要
'i'
.或者,您实际上可能希望基于多个单个字符进行查找,在这种情况下,您应该使用
"i"
,但在此情况下的类型是const char *
而不是char
,两者都定义c
和base::lookup()
方法 .但是,如果是这种情况,我会认真考虑使用C
std::string
类型而不是const char *
. 它可能没有必要,但使用C字符串可能会让您的生活更轻松,具体取决于您想要操纵实际值的程度 .尝试更换
同