使用指针时,洗牌函数不起作用 我最近开始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++)