#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]
mat*_*975 14
尝试更换
char c = "i";
Run Code Online (Sandbox Code Playgroud)
同
char c = 'i';
Run Code Online (Sandbox Code Playgroud)
pax*_*blo 11
"i" 它不是一个字符,它是一个字符数组,它基本上衰变为指向第一个元素的指针.
你几乎肯定想要'i'.
或者,您实际上可能希望基于多个单个字符进行查找,在这种情况下您应该使用"i"但在该情况下的类型const char *不仅仅是char在定义时c和base::lookup()方法中.
但是,如果是这种情况,我会认真考虑使用C++ std::string类型而不是const char *.它可能没有必要,但使用C++字符串可能会让您的生活更轻松,具体取决于您想要操纵实际值的程度.
"i"是一个字符串文字,你可能想要一个字面文字:'i'.
字符串文字是以null结尾的数组const char(char const*在该表达式中使用时会隐式转换为,因此会出错).
char文字只是chars