找回密码
 立即注册
收起左侧

类构造时no matching function for call

10
回复
8152
查看
[复制链接]
累计签到:21 天
连续签到:1 天
来源: 2015-2-19 21:50:29 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
In constructor 'CardItem::CardItem(const Card*, int, int)':
error: no matching function for call to 'Card::Card()'
CardItem::CardItem(const Card *card, int x, int y)
                                                                      ^
note: candidates are:
note:   Card::Card(Card::Suit, int, bool)——card类构造函数
note:     candidate expects 3 arguments, 0 provided
note:   Card::Card(const Card&)——card类
note:     candidate expects 1 argument, 0 provided

回复

使用道具 举报

累计签到:56 天
连续签到:1 天
2015-2-20 21:26:44 显示全部楼层
该函数里,你调用了默认构造函数card(),而你没有定义默认构造函数,这是C++的知识
回复 支持 反对

使用道具 举报

累计签到:21 天
连续签到:1 天
2015-2-20 22:47:58 显示全部楼层
侠隐 发表于 2015-2-20 21:26
该函数里,你调用了默认构造函数card(),而你没有定义默认构造函数,这是C++的知识 ...

我本意不是如此,我在Carditem类构造时用了一个Card类对象的参数,但是好像被理解成构造Card类的对象了
回复 支持 反对

使用道具 举报

累计签到:56 天
连续签到:1 天
2015-2-21 17:02:59 显示全部楼层
你把你cardItem构造函数和调用的代码发一下,让我看看
回复 支持 反对

使用道具 举报

累计签到:21 天
连续签到:1 天
2015-2-21 17:49:58 显示全部楼层
侠隐 发表于 2015-2-21 17:02
你把你cardItem构造函数和调用的代码发一下,让我看看
  1. //carditem.h
  2. class CardItem : public QGraphicsItem
  3. {
  4. public:
  5.     CardItem(const Card *card, int x, int y);
  6.     ~CardItem();
  7.     QRectF boundingRect() const;
  8.     void paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *);
  9.     ......
  10. }
复制代码
  1. //carditem.cpp
  2. CardItem::CardItem(const Card *card, int x, int y)
  3. {
  4. }
复制代码
回复 支持 反对

使用道具 举报

累计签到:21 天
连续签到:1 天
2015-2-24 15:40:45 显示全部楼层
本帖最后由 Infinity 于 2015-2-25 22:23 编辑

好久没人答,求助。@yafeilinux
回复 支持 反对

使用道具 举报

累计签到:1570 天
连续签到:1 天
2015-2-26 13:50:34 显示全部楼层
Infinity 发表于 2015-2-24 15:40
好久没人答,求助。@yafeilinux

那你的Card类怎么定义的。
回复 支持 反对

使用道具 举报

累计签到:21 天
连续签到:1 天
2015-2-26 14:35:41 显示全部楼层
本帖最后由 Infinity 于 2015-2-27 16:59 编辑
yafeilinux 发表于 2015-2-26 13:50
那你的Card类怎么定义的。
  1. //card.h
  2. class Card
  3. {
  4. public:
  5.     enum Suit { Spade, Club, Heart, Diamond, Joker, Vice };

  6.     Card(Suit suit, int number, bool selected = false);
  7.     ~Card();

  8.     int getId() const;
  9.     int getNumber() const;
  10.     Suit getSuit() const;
  11.     int getSuitN() const;

  12. protected:
  13.     Suit _suit;
  14.     int _number;
  15.     bool _selected;
  16.     int _id;
  17. };
复制代码
  1. //card.cpp
  2. Card::Card(Suit suit, int number, bool selected):
  3.     _suit(suit), _number(number), _selected(selected)
  4. {
  5. }
  6. Card::~Card()
  7. {
  8. }
复制代码
回复 支持 反对

使用道具 举报

累计签到:1570 天
连续签到:1 天
2015-3-4 11:53:31 显示全部楼层
Infinity 发表于 2015-2-26 14:35

如果可以把代码传上来,帮你改下。
回复 支持 反对

使用道具 举报

累计签到:21 天
连续签到:1 天
2015-3-4 20:17:20 显示全部楼层
yafeilinux 发表于 2015-3-4 11:53
如果可以把代码传上来,帮你改下。

问题我自己解决了,在new CardItem时有protected: Card _card;,此处出错,我改成指针后就没有问题了。
回复 支持 反对

使用道具 举报

累计签到:1570 天
连续签到:1 天
2015-3-12 13:48:20 显示全部楼层
Infinity 发表于 2015-3-4 20:17
问题我自己解决了,在new CardItem时有protected: Card _card;,此处出错,我改成指针后就没有问题了。 ...

嗯。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了