首页 文章

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

提问于
浏览
1

这个问题在这里已有答案:

#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 回答

  • 7

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

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

    char文字只是 char s

  • 10

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

    你几乎肯定想要 'i' .

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

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

  • 12

    尝试更换

    char c = "i";
    

    char c = 'i';
    

相关问题