1. ホーム
  2. c++

[解決済み】「const char*」から「char」への無効な変換エラー 【重複あり

2022-02-10 21:22:49

質問

単純な代入文で何が問題なのかよくわからなかったので、投稿させていただきました。 私は、ASCII文字の形を描き出す簡単なプログラムに構造体と関数を書くようにという宿題を出しています。 今、私は自分が書いた関数をテストしようとしているのですが、私が書いたDrawShape関数をテストするために、Circle構造体のsymbol要素に値を代入しようとしているところです。 charを代入しようとすると、「error: invalid conversion from 'const char*' to 'char'」というエラーメッセージが表示されます。 とても長くて未完成ですが、コード全体を載せておきます。 何か手助けがあれば、よろしくお願いします。私が得ている問題は、メインの冒頭の "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;
}

解決するには?

文字にはシングルクォートを使用する必要があります。二重引用符は、(一文字の可能性がある)文字列リテラルを使用していることを意味し、これは const char * (定数文字へのポインタ)。

正しい構文です。 circle1.symbol = '*';