C++ C++;[错误]没有用于调用的匹配函数

C++ C++;[错误]没有用于调用的匹配函数,c++,class,C++,Class,由于某些错误,我无法编译代码 以下是其中一些: 在函数“int main(int,char**)”中: [Error]调用“deckOfCards::shuffle(deckOfCards&)”时没有匹配的函数 [注]候选人为: 在main.cpp中包含的文件中 [注]void deckOfCards::shuffle(std::vector&) [注意]参数1没有从'deckOfCards'到'std::vector&'的已知转换 [错误]“dealCard”未在此作用域中声明 #包括 使

由于某些错误,我无法编译代码

以下是其中一些:

在函数“int main(int,char**)”中:

[Error]调用“deckOfCards::shuffle(deckOfCards&)”时没有匹配的函数
[注]候选人为:
在main.cpp中包含的文件中
[注]void deckOfCards::shuffle(std::vector&)
[注意]参数1没有从'deckOfCards'到'std::vector&'的已知转换
[错误]“dealCard”未在此作用域中声明

#包括
使用名称空间std;
班级卡
{
私人:
国际服装;
int m_脸;
公众:
卡片(内面、内套);
静态字符串适合[];
静态字符串面[];
串到串(串s_面,串s_套装);
int getFace();
无效设置面(内部面);
int getSuit();
无效诉讼(内部诉讼);
};
卡片::卡片(整型面,整型套装)
{
m_面=面;
m_suit=西装;
} 
串牌:套装[]={“红心”、“钻石”、“梅花”、“黑桃”};
字符串卡::脸[]={“A”,“平手”,“三”,“四”,“五”,
“六”、“七”、“八”、“九”、“十”、“杰克”、“女王”、“国王”};
int Card::getFace(){return m_face;}
无效卡片::setFace(int face){m_face=face;}
int Card::getSuit(){return m_suit;}
无效卡片::设置套装(内部套装){m_套装=套装;}
字符串卡::toString(字符串s_面,字符串s_套装)
{
串卡=s_面+s_套装的“+”;
回程卡;
}
#包括//cout
#包括//random\u shuffle
#包含//向量
#包括//时间
#包括
#包括“Card.h”
使用名称空间std;
甲板类
{
私人:
向量甲板;
公众:
纸牌;
静态整数计数;
静态int-next;
虚空洗牌(向量和牌组);
Card dealCard();
bool-moreCards();
};
int deckOfCards::count=0;
int DECKOFCARD::next=0;
deckOfCards::deckOfCards()
{
const int FACES=12;
常数=4;
int currentCard=0;
用于(int face=0;facecout您正试图使用
DeckOfCards
参数调用
DeckOfCards::shuffle

deckOfCards cardDeck; // create DeckOfCards object
cardDeck.shuffle(cardDeck); // shuffle the cards in the deck
但该方法采用
向量&

意译:

嘿,伙计。你正在尝试调用一个名为shuffle的函数 显然只接受一个类型为的参数 参考-
deckOfCards
,但没有此类功能

错误:

[Error] no matching function for call to 'deckOfCards::shuffle(deckOfCards&)'
[Note] candidate is:

In file included from main.cpp

[Note] void deckOfCards::shuffle(std::vector&)
[Note] no known conversion for argument 1 from 'deckOfCards' to 'std::vector&'
意译:

我的意思是,也许你指的是另一个名为shuffle的函数,但是 一个是引用
向量

错误:

[Error] no matching function for call to 'deckOfCards::shuffle(deckOfCards&)'
[Note] candidate is:

In file included from main.cpp

[Note] void deckOfCards::shuffle(std::vector&)
[Note] no known conversion for argument 1 from 'deckOfCards' to 'std::vector&'
如果我知道如何从一个
deckOfCards
向量;但我没有。所以我不会


要补充约翰的回答:

您想要传递给shuffle函数的是您在main中声明的类
deckOfCards
中的一副牌;但是,您在类中声明的一副牌或
vector deck
是私有的,因此无法从类外访问。这意味着您需要一个getter函数,比如e这是:

class deckOfCards
{
    private:
        vector<Card> deck;

    public:
        deckOfCards();
        static int count;
        static int next;
        void shuffle(vector<Card>& deck);
        Card dealCard();
        bool moreCards();
        vector<Card>& getDeck() {   //GETTER
            return deck;
        }
};
deckOfCards cardDeck; // create DeckOfCards object
cardDeck.shuffle(cardDeck.getDeck()); // shuffle the cards in the deck
但是,您有更多的问题,特别是在调用
cout
时。首先,您错误地调用了
dealCard
函数;因为
dealCard
是类的memeber函数,您应该这样调用它
cardcadeck.dealCard();
而不是这个
dealCard(cardcadek);

现在,我们来看第二个问题-打印到标准输出。您正在尝试使用以下说明打印交易卡,它是类型为
card
的对象:

cout << cardDeck.dealCard();// deal the cards in the deck

你读过错误信息吗?@不是吗皮特:那太简单了。你仔细阅读并试图理解吗?我发现这篇帖子非常有用,尤其是@johndblingtanks,@LastTigerEyes的答案。“感谢大家!这很有帮助。”。