繁体   English   中英

C ++参考和指针

[英]C++ References and Pointers

我的二十一点游戏程序中有以下代码:

Player *p;
Deck *d = new Deck();
Hand *playerHand = new Hand(), *dealerHand = new Hand();
p = get_Simple();  //This returns a pointer to an instance of a Simple Player for my game
Card dealerCard = d->deal();
p->draw(dealerCard, playerHand);

平局定义为

virtual bool draw(Card dealer, const Hand &player);

当我尝试运行此代码时,出现以下错误:

error: no matching function for call to 'Player::draw(Card&, Hand*&);
note: candidates are: virtual bool Player::draw(Card, const Hand&);

快速解决方案是将呼叫与签名匹配:

p->draw(dealerCard, *playerHand);

正确的方法是处理您的代码并摆脱动态分配和原始指针,而将其替换为智能指针。

该错误消息非常清晰(几次见后):

错误:没有匹配的函数调用'Player :: draw(Card&,Hand *&); 注意:候选人为:虚拟bool Player :: draw(Card,const Hand&);

在代码中,您尝试将CardHand*传递给函数,但是编译器未找到需要这些函数的重载。 它得到的最接近的函数是Cardconst Hand&

您需要取消引用指针才能到达对象:

p->draw(dealerCard, *playerHand);

或者,考虑是否需要通过指针保存所有对象。 如果避免使用指针,则代码要简单得多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM