我一直在网上搜索如何解决这个问题。还尝试将所有内容公之于众,但我认为这不是问题所在。这是我的标题代码:
#ifndef DEALER_HPP
#define DEALER_HPP
#include <queue>
class Dealer{
private:
queue<pair<int, char>> deck;
public:
Dealer(); // default constructor
~Dealer(); // destructor
};
#endif
源文件:
#include "Dealer.hpp"
using namespace std;
Dealer::Dealer(){// create unshuffled deck
const char* suitValue[4] = {"c", "d", "h", "s"};
for (int i = 2; i <= 14; i++)
{
for (int j = 1; j <= 4; j++)
{
deck.push(pair<int, char> (i, suitValue[j])); // error on this line
}
}
}
我的源文件中有错误
标识符“deck”未识别。
知道怎么解决吗?我也尝试过使用make_pair但没有成功。我真的觉得我应该使用的代码,我确定有一些简单的错误。对不起,我在追逐它时遇到了麻烦。
答案 0 :(得分:1)
首先,您需要#include <utility>
,deck
的声明应该是:
std::queue< std::pair<int, char> > deck;
这可能是您的错误的来源,尽管此特定行也应该有错误消息。
继续前进,该对是一对int
和char
。但你稍后写道:
pair<int, char> (i, suitValue[j])
suitValue[j]
是char *
,而不是char
。所以这也必须生成编译器错误。我想你想在两个地方std::string
而不是char
和const char *
。
此外,您在j
循环中访问越界。对于维度4
的数组,有效索引为0
1
2
3
。不是4
。