C++ C++;[错误]没有用于调用的匹配函数
由于某些错误,我无法编译代码 以下是其中一些: 在函数“int main(int,char**)”中: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”未在此作用域中声明 #包括 使
[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;face cout您正试图使用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的答案。“感谢大家!这很有帮助。”。