2016-04-28 12 views
-5

Linux上でGCC 4.8.4でコンパイルしています(-std = C++ 0x -fPIC)。GCCで配列を使用できません

は、私は私で定義された配列を使用したいが、私はこのエラーを取得しています:

class value 
{ 
    public: 
    typedef std::vector<value> array; 
    typedef std::map<std::string, value> object; 
    protected: 
     int type_; 
     union 
     { 
      ... 
      array* array_; 
     }; 

    typedef value::array array; 
} 

class ErrorMessage 
{ 
    array my_array; 
} 

コンパイルエラー:

/usr/include/c++/4.8/array:81:12: note:     template<class _Tp, long unsigned int _Nm> struct std::array 
struct array 
     ^
../sources/ErrorMessage.h:290:2: error: ‘array’ does not name a type 
array my_array; 

この問題を解決する方法はありますか? (GCC 4.4.7で動作します)

ありがとうございます。

+1

この型またはサイズの型は宣言しません。何の配列?牛?文字ですか?飛行機? –

+1

あなたは*テンプレート構造*である['std :: array'](http://en.cppreference.com/w/cpp/container/array)を使用しているようです。テンプレートの引数を指定する必要があります。 –

+1

私はOPが* 1行*を忘れてしまったかもしれないと思います。 –

答えて

2

<array>が間接的にどこから含まれてしまった、あなたはusing namespace stdのミスを犯したので、ErrorMessageで「アレイ」std名前空間にその名前を指します。
これはクラステンプレートであり、タイプではないため、エラーメッセージです。

valueの外には、そのarrayvalue::arrayと呼ばれます。
valuetypedef value::array arrayは無意味である;。。名前arrayはまだ唯一のクラスのスコープ内に存在しているあなたにもtypedef array array;を書かれている場合があります)また

書き込み

class ErrorMessage 
{ 
    value::array my_array; 
}; 

、標準を再利用しないでください名前。誰もが混乱する。

+0

あなたはそれに私を打つ。最後の行を十分に強調することはできません。 –

関連する問題