VS 2017告诉我我正在尝试转换变量,但我没有

时间:2019-04-18 02:16:09

标签: c++ arrays function class visual-studio-2017

我正在尝试建立一个函数,该函数需要几个数组以从类的私有部分构建一副纸牌。该函数仍在同一类中,但在公共部分中。但是,Visual Studio调试器告诉我,没有合适的函数可以将字符串转换为char。我的代码中没有任何char变量,也没有尝试对其进行转换。这两个数组都是字符串。

最初是将2d数组转换为1d数组,但我将其更改为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 个答案:

答案 0 :(得分:1)

您正在尝试使用cards[j]访问字符串中的char,因为cards是一个字符串。

要访问阵列中的特定卡,您需要更改功能的签名:

void builddeck(string cards[])