为什么我收到无效的参数错误?

时间:2014-03-21 06:56:10

标签: compiler-errors

以下是我的声明:

typedef enum { WHITE, BLACK } vcolor_t;
vector<vcolor_t> vcolor;

这些是我得到的错误:

error: template argument for 'template<class _Alloc> class std::allocator' uses local type
      'citysim::dijkstra(std::vector<int>&, const int&, const int&)::vcolor_t'
error:   trying to instantiate 'template<class _Alloc> class std::allocator'
error: template argument 2 is invalid
error: invalid type in declaration before ';' token

每当我做出像

这样的声明时
vcolor_t vcolor;

它没有给我任何错误,所以我不明白为什么矢量声明给我这些错误。

1 个答案:

答案 0 :(得分:0)

您的代码,因为它代码将在MS编译器上编译,但不在gcc上编译。我真的不知道这个的原因。将你的typedef声明移出例程dijkstra,它应该编译。

#include <vector>
using namespace std;
namespace city
{
    typedef enum {WHITE, BLACK} vcolor_t; // <-- Move it here
    void dijkstra(...)
    {
        // typedef enum ...  <-- the compiler does not like this
        vector<vcolor_t> vcolor;
    }
}