2016-07-12 2 views
-1

내 파일을 컴파일하는 동안 두 가지 오류가 발생했습니다.c:\mingw\lib\gcc\mingw32\4.9.3\include\c++\bits\c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options내가 이클립스 화성에 플래그를 추가하려고 시도)여러 오류 카드 덱 구축

1,하지만 근무하지 않는 것 (나는이 모든 SO 가이드 라인을 위반하는 방식을 볼 수 실패합니다. 설명없이 아래로 투표를받은) . 그게 내가 누락 된 유일한 것이 될 수 있을까?

2)\DeckOfCards.h:21:8: error: 'array' in namespace 'std' does not name a template type이 카드의 갑판에서 std::array<Card,52> cards_; 라인에 관해서입니다 파일 헤더. 이것은 여러 클래스가있는 카드 갑판을 만들려고 시도한 첫 번째 시도입니다. 또는 그 문제에 대한 단일 클래스이므로 명백한 오류가 발생하는 경우 사과드립니다.

편집 : 컴파일러에서 정확한 메시지 : 난 아무것도 변경하지 않고 이러한 오류를받은 후 두 번째로 다시 컴파일하면

07:56:55 **** Incremental Build of configuration Debug for project TexasHoldem **** 
Info: Internal Builder is used for build 
g++ -O0 -g3 -Wall -c -fmessage-length=0 -o TexasHoldemMain.o "..\\TexasHoldemMain.cpp" 
In file included from c:\mingw\lib\gcc\mingw32\4.9.3\include\c++\array:35:0, 
       from ..\DeckOfCards.h:11, 
       from ..\TexasHoldemMain.cpp:5: 
c:\mingw\lib\gcc\mingw32\4.9.3\include\c++\bits\c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options. 
#error This file requires compiler and library support for the \ 
^
In file included from ..\TexasHoldemMain.cpp:5:0: 
..\DeckOfCards.h:21:8: error: 'array' in namespace 'std' does not name a template type 
    std::array<Card,52> cards_; 
     ^

07:56:56 Build Finished (took 233ms) 

내가 여러 파일에 걸쳐 다른 모든 곳에서 톤 이상의 오류가 나타납니다; 그게 정상인가요?

홈페이지

//Texas Holdem implementation 
#include <iostream> 

#include "Card.h" 
#include "DeckOfCards.h" 


int main() 
{ 


    DeckOfCards deck; 

    deck.printDeck(); 

    return(0); 
} 

DeckOfCards.h

* DeckOfCards.h 
* 
* Created on: Jul 8, 2016 
*  Author: 
*/ 

#ifndef DECKOFCARDS_H_ 
#define DECKOFCARDS_H_ 

#include <array> 

class DeckOfCards 
{ 

    public: 
     DeckOfCards(); 
     void printDeck(); 

    private: 
     std::array<Card,52> cards_; 


}; 

#endif /* DECKOFCARDS_H_ */ 

Card.h

* Cards.h 
* 
* Created on: Jul 8, 2016 
*  Author: 
*/ 

#ifndef CARD_H_ 
#define CARD_H_ 

struct Card 
{ 

    enum Suit_Type 
    { 
     Diamonds, 
     Hearts, 
     Spades, 
     Clubs, 
    } suit; 

    enum Value_Type 
    { 

     Two = 2, 
     Three = 3, 
     Four = 4, 
     Five = 5, 
     Six = 6, 
     Seven = 7, 
     Eight = 8, 
     Nine = 9, 
     Ten = 10, 
     Jack = 11, 
     Queen = 12, 
     King = 13, 
     Ace = 14 
    } value; 

    void printCard(); 
}; 

DeckOfCards.cpp

#include <iostream> 
#include "DeckOfCards.h" 
#include "Card.h" 
#include <array> 


DeckOfCards::DeckOfCards() 
: 
    cards_ 
    { 
     {Card::Diamonds, Card::Two}, 
     {Card::Diamonds, Card::Three}, 
     {Card::Diamonds, Card::Four}, 
     {Card::Diamonds, Card::Five}, 
     {Card::Diamonds, Card::Six}, 
     {Card::Diamonds, Card::Seven}, 
     {Card::Diamonds, Card::Eight}, 
     {Card::Diamonds, Card::Nine}, 
     {Card::Diamonds, Card::Ten}, 
     {Card::Diamonds, Card::Jack}, 
     {Card::Diamonds, Card::Queen}, 
     {Card::Diamonds, Card::King}, 
     {Card::Diamonds, Card::Ace}, 
     {Card::Hearts, Card::Two}, 
     {Card::Hearts, Card::Three}, 
     {Card::Hearts, Card::Four}, 
     {Card::Hearts, Card::Five}, 
     {Card::Hearts, Card::Six}, 
     {Card::Hearts, Card::Seven}, 
     {Card::Hearts, Card::Eight}, 
     {Card::Hearts, Card::Nine}, 
     {Card::Hearts, Card::Ten}, 
     {Card::Hearts, Card::Jack}, 
     {Card::Hearts, Card::Queen}, 
     {Card::Hearts, Card::King}, 
     {Card::Hearts, Card::Ace}, 
     {Card::Spades, Card::Two}, 
     {Card::Spades, Card::Three}, 
     {Card::Spades, Card::Four}, 
     {Card::Spades, Card::Five}, 
     {Card::Spades, Card::Six}, 
     {Card::Spades, Card::Seven}, 
     {Card::Spades, Card::Eight}, 
     {Card::Spades, Card::Nine}, 
     {Card::Spades, Card::Ten}, 
     {Card::Spades, Card::Jack}, 
     {Card::Spades, Card::Queen}, 
     {Card::Spades, Card::King}, 
     {Card::Spades, Card::Ace}, 
     {Card::Clubs, Card::Two}, 
     {Card::Clubs, Card::Three}, 
     {Card::Clubs, Card::Four}, 
     {Card::Clubs, Card::Five}, 
     {Card::Clubs, Card::Six}, 
     {Card::Clubs, Card::Seven}, 
     {Card::Clubs, Card::Eight}, 
     {Card::Clubs, Card::Nine}, 
     {Card::Clubs, Card::Ten}, 
     {Card::Clubs, Card::Jack}, 
     {Card::Clubs, Card::Queen}, 
     {Card::Clubs, Card::King}, 
     {Card::Clubs, Card::Ace} 
    } 
{ 
} 

void DeckOfCards::printDeck() 
{ 

    bool first = true; 

    for(auto card : cards_) 
    { 
     if(!first) 
     { 

      std::cout << ", "; 

     } 
     card.printCard(); 
     first = false; 
    } 

} 

Card.cpp

#include<iostream> 
#include "Card.h" 
#include "DeckOfCards.h" 

Card::Card() 
{} 

void Card::printCard() 
{ 

    switch(suit) 
    { 

    case Hearts: 
     std::cout << "♥"; 
     break; 
    case Diamonds: 
     std::cout << "♦"; 
     break; 
    case Clubs: 
     std::cout << "♣"; 
     break; 
    case Spades: 
     std::cout << "♠"; 
     break; 
    } 
    if(value < Jack) 
    { 

     std::cout << (int)value; 
    } 
    else 
    { 
     switch(value) 
     { 

     case Jack: 
      std::cout << 'J'; 
      break; 
     case Queen: 
      std::cout << 'Q'; 
      break; 
     case King: 
      std::cout << 'K'; 
      break; 
     case Ace: 
      std::cout << 'A'; 
      break; 
     } 
    } 
} 
+0

'std :: array'와 같은 C++ 11 기능을 사용하는 경우 g ++ 6.1이 없으면 컴파일러에게 알려야합니다. '-std = C++ 11' 옵션을 사용하십시오. 그리고 제대로 추가하십시오. .-) –

+0

@BoPersson 나는 플래그를 넣음으로써 올바르게 추가했다고 생각했다. 이것은 어리석은 질문 일지 모르지만,이 컴파일러 옵션이 포함되어있는 초보자들에게 좋은 IDE인가? – StormsEdge

+0

@StormsEdge 글쎄, 내 편향된 의견이지만 Visual Studio, Code :: Lite 또는 QtCreator는 C++과 관련하여 훨씬 사용자 친화적이라고 생각합니다. 그러나 주제로 돌아가는 중 : 적절한 플래그가 설정되어 있는지 반드시 확인해야합니다.gcc가 호출되는 출력에서 ​​라인을 게시 할 수 있습니까? – Lehu

답변

2

당신은 GNU 컴파일러에 대한 -std = C++ (11) 플래그를 설정해야합니다. 이클립스 포럼에 따르면

:

  1. 마우스 오른쪽 단추로 클릭하고 "속성"
  2. 이동에 프로젝트를하고 이동 : C/C++ 빌드 -> 설정 -> 도구 설정 -> GCC C++ 컴파일러 - > 기타 -> 기타 플래그.
  3. 끝에 "-std = C++ 11"을 넣습니다.
+0

감사합니다. Lehu! 모든 문제가 해결되었습니다! 감사합니다 – StormsEdge