使用指针时,洗牌函数不起作用 我最近开始C++,我创建了一个名为Cudio的类,它几乎创建了一副卡片。它的功能之一是洗牌一副牌。我在main()中创建了一个类型为Deck的对象,并且能够调用shuffle()成员函数…这很有效!但是,当我使用指针访问shuffle()函数时,Xcode突出显示: Card u1 = *(cards[index]);

使用指针时,洗牌函数不起作用 我最近开始C++,我创建了一个名为Cudio的类,它几乎创建了一副卡片。它的功能之一是洗牌一副牌。我在main()中创建了一个类型为Deck的对象,并且能够调用shuffle()成员函数…这很有效!但是,当我使用指针访问shuffle()函数时,Xcode突出显示: Card u1 = *(cards[index]);,c++,C++,和产出: Thread 1:EXC_BAD_ACCESS (code = EXE_1386_GPFLT) 有人能帮我吗 void Deck::shuffle() { srand(static_cast<unsigned int>(time(0))); for(size_t x = 0;x<cards.capacity();x++) { int index = rand()%51; int index2 = rand(

和产出:

Thread 1:EXC_BAD_ACCESS (code = EXE_1386_GPFLT) 
有人能帮我吗

void Deck::shuffle()
{
    srand(static_cast<unsigned int>(time(0)));

    for(size_t x = 0;x<cards.capacity();x++)
    {
        int index = rand()%51;
        int index2 = rand()%51;

        Card u1= *(cards[index]);
        *cards[index] = *cards[index2];
        *cards[index2] = u1;
    }
}

int main()
{
    //Deck p;
    //p.shuffle(); //works!
    //p.Display();//works!
    Deck *p;
    p->shuffle(); //does not work!
}
void-Deck::shuffle()
{
静态施法(时间(0));
for(size_t x=0;xshuffle();//不起作用!
}

您的代码中有几个错误

不指向任何地方的指针 您刚刚创建了一个指向组的指针。指针指向的实际组在哪里

你应该这样做

Deck* p = new Deck;
p->Shuffle();

迭代到大小,而不是容量
(大小x=0;x为什么不使用
std::vector
std::shuffle
?我想你没有抓住要点。
Deck* p = new Deck;
p->Shuffle();
Deck theDeck;
Deck* p = &theDeck;
p->Shuffle();
for(size_t x = 0;x<cards.capacity();x++)