2016-09-22 13 views
0

私はC++を初めて使用しており、列挙型の値の配列を含めると、Microsoft Visual Studioで構文エラーが発生します。なぜこのようなケースであるか分かりません。エラー番号はC2061であり、それは「構文エラー状態:。パラメータとしての列挙型C++

ヘッダファイル

 #include "verbose_binary.h" 
     #include "stdafx.h" 
     #include <bitset> 
     #include <string> 
     #include <iostream> 


     void convert(std::bitset<5> bs, VerboseBinary aVB[6]) { 
      VerboseBinary VBArray[6] = { 
       VerboseBinary:: One, 
       VerboseBinary:: Two, 
       VerboseBinary:: Four, 
       VerboseBinary:: Eight, 
       VerboseBinary:: Sixteen, 
       VerboseBinary:: Null 
      }; 

      for (int i = 0; i < 5; i++) { 
       if (bs.test(i)) { 
        aVB[i] = VBArray[i]; 
       } 
       else { 
        aVB[i] = VerboseBinary::Null; 
       } 

      } 
      aVB[5] = VerboseBinary::Null; 

     } 

メイン

verbose_binary.cpp
#pragma once 
    #include <bitset> 
    enum class VerboseBinary : int { 
     One, 
     Two, 
     Four, 
     Eight, 
     Sixteen, 
     Null, 
    }; 

    void convert(std::bitset<5> bs, VerboseBinary aVB[6]); 

verbose_binary.h:識別子 'VerboseBinary' をここでは、コードです
#include "stdafx.h" 
#include <iostream> 
#include <iostream> 
#include <bitset> 

#include "verbose_binary.h" 

int main() { 
    int a, b; 
    std::bitset<5> aBs, bBs; 
    std::cout << "Enter two numbers between 0-31:" << std::endl; 
    std::cin >> a >> b; 
    if (a<0 || a>31) return -1; 
    if (b<0 || b>31) return -2; 
    aBs = static_cast<std::bitset<5>>(a); 
    bBs = static_cast<std::bitset<5>>(b); 
    // std::cout << aBs << " " << bBs << std::endl; 
    VerboseBinary aVB[6]; 
    VerboseBinary bVB[6]; 
    convert(aBs, aVB); 
    convert(bBs, bVB); 
    return 0; 
} 
+0

私は初心者には非常に有望ではないよない理由を与えdownvoteのための良性のダブル含めることがあります。 – IntegrateThis

+0

慎重にお読みくださいhttp://stackoverflow.com/help/mcveコードは極小ではありません。あなたはエラーのある行番号のコードを書きませんでした。 (私はあなたにdownvoteをしなかった) – SergV

+1

どのVisual Studioのバージョンを使用していますか?あなたのenumの定義の終わりには、迷子カンマがあります。また、stdafx.hは、verbose_binary.cpp内の他のインクルードの前に表示されます。メインは ''のために良性の二重包含を持っています。 –

答えて

1

Lolのように、これらの問題のいずれかがエラーの原因として考えられるようです:

  • 使用しているVisual Studioのバージョンは何ですか?クラスの列挙型はVS 2012で利用できるようになりました。

  • また、列挙型の定義の最後に迷いのカンマがあります。

  • また、stdafx.hは、verbose_binary.cpp内の他のインクルードの前に表示されます。

  • <iostream>

関連する問題