В конструкторе «Player :: Player ()»: ошибка: недопустимое преобразование из «const char *» в «char»

0

У меня есть эта строка в моем конструкторе по умолчанию Blackjack.

m_players[0].SetPlayerName("Jane");

Это использует setter в моем классе Player, чтобы установить имя игрока как Jane.

Мой конструктор Player - это.

Player::Player()
{
  Player player;
  player.m_funds = 0;
  player.m_name = "";
  player.m_bet = 0;
  player.m_busted = false;
}

И, для получения дополнительной информации, мой метод SetPlayerName.

void Player::SetPlayerName(char name)
{
  m_name = name;
}

Как исправить эту ошибку преобразования? Я просто пытаюсь установить имя игрока как char. Благодарю!

Я просто пытаюсь настроить конструктор по умолчанию с одним игроком, Джейн.

  • 1
    Строковый литерал не является символом, он преобразуется в указатель в этом контексте, о чем говорит ошибка. Почему вы ожидаете, что это сработает?
  • 0
    Вы уверены, что понимаете, что такое символ? Потому что здесь не то, что вы хотите. Попробуйте строку.
Показать ещё 5 комментариев
Теги:
pointers
const
char

1 ответ

1
Лучший ответ

Строковый литерал (что-то вроде "Foobar" имеет тип const char[N] где N - количество символов + 1 (для нулевого терминатора), что означает массив из N char.

Ваша переменная m_name похоже, имеет тип char который является единственным символом.

Невозможно преобразовать массив const char[N] в char. Вы действительно хотите, чтобы m_name было типа std::string или, возможно, const char*.

Почему const char*? const char[N] распадается на const char* и может указывать на литерал любого размера.

  • 0
    Что ж, ошибка на самом деле говорит char , так что если OP не скопировал ошибку неправильно, это не так.
  • 0
    Ах, ОП знает о С ++ меньше, чем я думал.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню