C ++无法创建用户定义类的向量

时间:2013-04-28 04:08:11

标签: c++ class vector

我正在尝试创建一个我刚刚设置的类的向量,并且我一直在收到错误。谁能给我一些建议?这是我的相关代码:

class process{
    public:
        enum state {New,Ready,Running,Waiting,IO,Terminated};
        double CPUburst[MAXCPUBURSTS];
        double IOburst[MAXCPUBURSTS-1];
        int nCPUbursts; // The number of CPU bursts this process actually uses
        int priority, type; // Not always used
        int currentBurst; // Indicates which of the series of bursts is currently being handled
};

vector<process> processTable;

我得到的错误是:

"template argument for 'template<class _Alloc> class std::allocator' uses local type 'main(int, char**)::process*'"

2 个答案:

答案 0 :(得分:5)

我认为您已在class process内定义了main

来自标准(旧版)

  

本地类型,没有链接的类型,未命名的类型或从这些类型中复合的类型不得用作模板类型参数的模板参数。

然而,这在c ++ 11及更高版本中发生了变化。

因此,在全局范围内定义类或使用支持此功能的编译器(或启用)。在g ++中,您可以使用-std=c++0x-std=c++11启用此功能,具体取决于版本。

答案 1 :(得分:2)

锑已经解码了您无需提及的代码中的相关详细信息。

修复方法是在编译器中启用C ++ 11支持(通常为-std=c++11-std=gnu++11)。 C ++ 03不允许使用本地类作为模板参数。 C ++ 11可以。