c++ - 我很困惑为什么我的 fillDeck 函数说, "assigning to ' char *' from incompatible type ' const char *”

标签 c++ pointers

当我尝试用面值和花色的纸牌结构填充我的牌组时,出现上述错误。有人对我做错了什么有什么建议吗?

#include <iostream>
#include <cstdlib>
#include <ctime>
#define CARDS 52
#define FACES 13
#define SUITS 4
using namespace std;

typedef struct card
{
    char * face;
    char * suit;
}Card;
 void fillDeck(Card * const wDeck, const char *wFace[], const char *wSuit[]);
 void shuffle(Card * const wDeck);
 void deal(const Card * const wDeck);

int main(void)
{
    Card deck [CARDS];
    const char * face[] = {"Ace", "Two", "Three", "Four", "Five",
            "Six", "Seven", "Eight", "Nine", "Ten",
            "Jack", "Queen", "King"};
    const char * suit[] = {"Hearts", "Diamonds", "Clubs", "Spades"};
    srand(time(NULL));
    fillDeck(deck, face, suit);
    shuffle(deck);
    deal(deck);
}
void fillDeck(Card * wDeck, const char * wFace[], const char * wSuit[])
{
    int i;
    for (i = 0; i< CARDS; i++)
    {
        wDeck[i].face = wFace[i % FACES];
        wDeck[i].suit = wSuit[i / FACES];
    }
}

最佳答案

wDeck[i].face = wFace[i % FACES];

突击测试:

问:什么是wDeck

答:这是一个Card类实例。

问:它的“面子”成员是什么?

答:这是一个char *

问:WFace 数组中有什么?

A: const char *s.

问:为什么在 C++ 中,不能将指针分配给常量对象,分配给指向可变(非常量)对象的指针?

A:因为常量对象是常量。但是,如果您有一个指向它的指针,并且将该指针复制到一个不同的可变指针,这意味着您可以使用不同的可变指针修改常量值。

现在,你现在试着回答你自己的问题怎么样?

关于c++ - 我很困惑为什么我的 fillDeck 函数说, "assigning to ' char *' from incompatible type ' const char *”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36440546/

相关文章:

c++ - 尝试在 cygwin : error: expected unqualified-id before '&&' token 中构建 boost 文件系统时出错

c - 返回指针数组的指针

c - 在 C 中保存和访问指向字符串的指针

c - 使用先前分配的指针调用 strlen 时出现段错误

c++ - std::functions 和 lambda 函数传递

c++ - 为什么 weak_ptr 可以打破循环引用?

c++ - 为记录器创建一个单独的线程可以吗?

c - 递增指针位置

c++ - 如何处理大指针结构

c++ - 如何从包含的类中执行函数