1. ホーム
  2. c++

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

2022-01-31 08:54:50

質問

単純な代入文で何が問題なのかよくわからなかったので投稿させていただきました。 私は、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 = '*';