以下是我的声明:
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;
它没有给我任何错误,所以我不明白为什么矢量声明给我这些错误。
答案 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;
}
}