c++

Nieprawidłowa konwersja z błędu „const char *” na „char”


Chciałem to opublikować, ponieważ nie byłem pewien, jaki mam problem z prostym operatorem przypisania. Odrabiam zadanie domowe, które prosi mnie o napisanie struktur i funkcji w prostym programie do rysowania kształtów ze znaków ASCII. W tej chwili próbuję tylko przetestować napisane przeze mnie funkcje i próbuję przypisać wartość do elementu symbolu struktury koła, aby przetestować napisaną przeze mnie funkcję DrawShape. Kiedy próbuję przypisać do niego znak *, pojawia się błąd: „błąd: nieprawidłowa konwersja z 'const char *' na 'char'”. Wkleję cały kod, chociaż jest bardzo długi i niedokończony. Każda pomoc w tej sprawie byłaby bardzo mile widziana. Problem, który otrzymuję, znajduje się na początku głównego problemu w „circle1.char = '*'”
#include <iostream>
#include <math.h>
#include <cstdlib>
using namespace std;const int NUMBER_OF_ROWS = 26;
const int NUMBER_OF_COLUMNS = 81;
char drawSpace[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS];struct Point{
int x;
int y;
};struct Circle{
Point center;
int radius;
char symbol;
bool buffer[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS];
};bool setCircleRadius(Circle &b, int r);
bool setCircleCenter(Circle &b, int x, int y);
bool moveCircle(Circle &b, int x, int y);
void drawCircle (Circle b);
void lineChars(Line a);
void circleChars(Circle b);
void drawShapes();int main() {
Circle circle1;
circle1.radius = 5;
circle1.symbol = "*";
circle1.center.x = 40;
circle1.center.y = 10; drawCircle(circle1); return 0;
}

Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

W przypadku znaków należy używać apostrofów. Podwójne cudzysłowy oznaczają, że używasz (potencjalnie jednoznakowego) literału ciągu, który jest reprezentowany jako
const char *
(wskaźnik do znaku stałego).
Prawidłowa składnia:
circle1.symbol = '*';
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Problem jest taki:
circle1.symbol = "*";

circle1.symbol
jest zdefiniowany jako
char
, ale przypisujesz do niego ciąg (tablicę znaków). Musisz to zrobić
circle1.symbol = '*';
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Twoja definicja
Circle
mówi, że
symbol
to
char
, ale próbujesz przypisać mu literał ciągu, taki jak
char [2] : 
circle1.symbol = "*";

Zamiast tego musisz przypisać do niego
char
:
circle1.symbol = '*';
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Ty masz:
circle1.symbol = "*";

Potrzebujesz:
circle1.symbol = '*';
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

W C ++ jeden znak nie jest zapisywany w cudzysłowach, ale w apostrofach, czyli
'*'
, a nie
"*"
. Właściwie „*” jest tablicą

dwa

znaków, z których pierwszy to
„*”
, a drugi to
„\ 0”
, aby zaznaczyć koniec linii.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Element „symbol” Twojej struktury Kręgu jest zdefiniowany jako jeden symbol. Wygląda na to, że przypisujesz znak, ale w rzeczywistości przypisujesz ciąg lub znak * o długości 1. Różnica: char a = 'a'; char * a = "a"; wszystko jest w cudzysłowie.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Twój błąd znajduje się w wierszu
circle1.symbol = "*";
.
"*"
to
const char *
symbol
(Twojej struktury) to
char
Try:
circle1.symbol = '*';

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się