2014-04-12 3 views
0

저는 이것을 어떻게 해결할 지 온라인에서 많이 조사해 왔습니다. 또한 공개적으로 모든 것을 시도했지만 그게 문제라고 생각하지 않습니다.식별자 미확인 기본 생성자

#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 
     } 
    } 
} 

내 소스 파일에 오류가있어,

식별자 "갑판"정체 불명이다.

어떻게 해결할 수 있습니까? 또한 make_pair를 사용하여 성공하지 못했습니다. 내가해야하는 코드가 정말 좋다고 느낍니다. 몇 가지 간단한 실수가있을 것입니다. 죄송합니다,이 문제를 쫓고 있습니다.

감사합니다.

답변

1

첫째는 #include <utility> 필요 deck의 선언은 다음과 같아야합니다이 특정 라인에 대한 오류 메시지가 있었어야하지만

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

이것은 아마도 오류의 원천입니다.

이동하면 쌍은 intchar 쌍입니다. 그러나 나중에 쓰기 :

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

suitValue[j]char * 아닌 char입니다. 따라서 이것은 또한 컴파일러 오류를 생성해야합니다.및 const char * 대신에 std::string을 사용하고 싶습니다.

또한 j 루프의 범위를 벗어난 액세스. 4 차원의 배열의 경우 유효한 인덱스는 0123입니다. 아니 4.