Вопрос по c++ – ошибка: неверное преобразование из "const char *" в "char" [-fpermissive] [duplicate]

1

This question already has an answer here:

invalid conversion from ‘const char*’ to ‘char’ 2 answers
#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: In function ‘int main()’: test.cpp:20:10: error: invalid conversion from ‘const char*’ to ‘char’ [-fpermissive]

Ваш Ответ

3   ответа
7

"i" строковый литерал, вы, вероятно, хотели символьный литерал:'i'.

Строковые литералы являются массивами с нулевым символом в концеconst char (которые неявно преобразуются вchar const* при использовании в этом выражении, следовательно, ошибка).

символьные литералы простоchars

10

"i" это не символ, это массив символов, который в основном распадается на указатель на первый элемент.

Вы почти наверняка хотите'i'.

В качестве альтернативы, вы можете на самом делеwant поиск, основанный на более чем одном символе, в этом случае выshould использовать"i" но тип в этом случаеconst char * а не простоcharкак при определенииc и вbase::lookup() метод.

Однако, если бы это было так, я бы серьезно подумал об использовании C ++std::string тип, а неconst char *, А может и не бытьnecessary, но использование строк C ++ может значительно облегчить вашу жизнь, в зависимости от того, насколько вы хотите манипулировать действительными значениями.

12

Попробуйте заменить

 char c = "i";

с

 char c = 'i';
@VarunVyas, какое сообщение об ошибке вы получаете, когда вы меняете эту строку?
Это не работает :( VarunVyas

Похожие вопросы