VS 2017 говорит мне, что я пытаюсь преобразовать переменные, но я не - PullRequest
1 голос
/ 18 апреля 2019

Я пытаюсь настроить функцию, которая использует несколько массивов для создания колоды карт из частного раздела в классе.Функция все еще находится в том же классе, но в открытом разделе.Однако отладчик Visual Studio говорит мне, что нет подходящей функции для преобразования строки в символ.В моем коде нет переменных типа char, и я не пытаюсь его преобразовать.Оба массива являются строками.

Первоначально это был 2-мерный массив, входящий в 1-мерный массив, но я изменил его на 2 отдельных массива, чтобы посмотреть, работает ли он, но он все еще говорит мне, что я пытаюсь преобразовать.

class Cards {
private:

string deckcontents[13]{"A","2","3","4","5","6","7","8","9","10","J","K","Q"};
string cardshape[4]{ "H", "S", "D", "C" };
string deck[52]{};

public:

int generaterandcardnum() {
    int num1 = NULL;
    for (int i = 0; i < 13; i++) {
        num1 = rand() % 10;
    }
    return num1;
}

int generaterandcardsuit() {
    int num2 = NULL;
    for (int i = 0; i < 4; i++) {
        num2 = rand() % 10;
    }
    return num2;
}

void builddeck(string cards)
{
    int cardnum = generaterandcardnum();
    int cardsuit = generaterandcardsuit();
    string card = deckcontents[cardnum] + cardshape[cardsuit];
    int j = 0;
    for (int i = 0; i < 4; i++) {
        for (int k = 0; k < 13; k++) {
                        //This is where the problem lies
            cards[j] = card;

                        //.cpp(58): error C2440: '=': cannot convert from 'std::string' to 'char'

            j = j + 1;
        }

    }
    return;
}
};

1 Ответ

1 голос
/ 18 апреля 2019

Вы пытаетесь получить доступ к символу в строке с cards[j], потому что cards является строкой.

Чтобы получить доступ к определенной карте в массиве, вам нужно изменить сигнатуру вашей функции:

void builddeck(string cards[])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...