默认构造函数中标识符未标识

问题描述 投票:0回答:1

我一直在网上搜索如何解决这个问题。还尝试将所有内容公之于众,但我认为这不是问题所在。这是我的标题代码:

#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但没有成功。我真的觉得我应该使用的代码,我确定有一些简单的错误。对不起,我在追逐这个问题时遇到了麻烦。

c++ constructor queue identifier std-pair
1个回答
1
投票

首先你需要#include <utility>deck的声明应该是:

std::queue< std::pair<int, char> > deck;

这可能是您的错误的来源,尽管此特定行也应该有错误消息。

继续前进,这对是一对intchar。但你稍后写道:

pair<int, char> (i, suitValue[j])

suitValue[j]char *,而不是char。所以这也必须生成编译器错误。我想你们两个地方都需要std::string而不是charconst char *

此外,您访问j循环中的界限。对于维数4的数组,有效指数是0 1 2 3。不是4

© www.soinside.com 2019 - 2024. All rights reserved.