1. ホーム
  2. c++

[解決済み] char 型のエンティティに const char * 型の値を割り当てることはできない C OOP

2022-02-18 18:02:04

質問

C++でユーザーの成績を計算するクラスを作成しているのですが、単純ながら厄介な問題に遭遇しています。エラーの意味は分かるのですが、それを修正する方法が分かりません。文字列に変更すると実際に問題は解決しますが、これは私がやりたいことではありません。

エラーは以下の通りです: const char *" cannot be assigned to an entity of type "char

コード

    #include <string>
using namespace std;

class Gradecalc
{
public:
    Gradecalc()
    {
        mark = 0;
    }
    int getmark()
    {
        return mark;
    }
    void setmark(int inmark)
    {
        mark = inmark;

    }
    void calcgrade()
    {
        if (mark >=70)
        {
            grade = "A";      //**ERROR IS HERE**
        }

    }
    char getgrade()
    {
        return grade;
    }

private:
    int mark;
    char grade; //VARIABLE IS DECLARED HERE
};

解決方法は?

C++には、文字からなる定数として、文字列リテラルと文字リテラルの2種類があります。

  • 文字列リテラルは、二重引用符で囲まれ、型は const char *
  • 文字リテラルは一重引用符で囲まれ、型は char .

文字列リテラルは複数の文字を使用できますが、文字リテラルは1文字しか使用できません。この2つのタイプのリテラルは互換性がありません。代入の左辺には互換性のある型の変数または定数を指定する必要があります。あなたが宣言した grade として char のように、文字リテラルを使用するようにコードを変更する必要があります。

grade ='A';