求助,一个关于类找不到构造函数的问题



  • 很高兴看到咱们的论坛发展壮大,好久没上,又好多了问题。

    我自己构造了两个类,一个卡牌类,有点数和花色,头文件如下:
    #ifndef CARD_H
    #define CARD_H

    class card
    {
    public:
    int point;
    int color;
    card(int p,int c);
    };

    #endif // CARD_H

    cpp文件只定义了个类构造函数,如下:
    #include "card.h"
    #include "cards.h"

    card::card(int p,int c)
    {
    point=p;
    color=c;
    }

    又定义了一副牌的类,共有三张牌,cards,头文件如下:
    #ifndef CARDS_H
    #define CARDS_H
    #include "card.h"

    class cards
    {
    public:
    card card1;
    card card2;
    card card3;
    cards(card c1,card c2,card c3);
    };

    #endif // CARDS_H

    cpp文件也只有一个构造函数,
    #include "card.h"
    #include "cards.h"

    cards::cards(card c1,card c2,card c3)
    {
    card1=c1;
    card2=c2;
    card3=c3;
    }

    运行的时候,错误如下:
    0_1462717124163_QQ截图20160508221754.png



  • 原因在于:你在定义card1,card2,card3这三个变量的时候,并没有提供初始化式,实际上调用的是card:card()这种形式的构造函数(默认构造函数)。在card类里面,你只定义了一个card(int p,int c)形式的构造函数,却没有定义默认构造函数。并且,如果在一个类中,定义了任意一个构造函数,编译器就不再产生默认构造函数。



  • 自己看了书,好像解决了,只要在card类里边加一个构造函数就行了,相当于重载了构造函数,在头文件和函数体里边都加一个:card(){}就行了。


登录后回复
 

与 萌梦社区 的连接断开,我们正在尝试重连,请耐心等待