2012-07-26 72 views
1

我试图做到以下几点:不能使结构的载体在C++

struct Code 
{ 
    GF2X generator; 
    vector<GF2X> codeWords; 
}; 

vector<Code> allCodes; 

不过,我结束了这个错误:

error: template argument for 'template<class _Alloc> class std::allocator' uses local type 'main()::Code'| 

我完全失去了作为这意味着什么。这也是我第一次用C++编程。

回答

5

在C++中,03本地类(函数内定义的类)不能用作模板参数。这个限制在C++ 11中得到了解决,但是如果你的编译器不支持这个特性,你总是可以在命名空间级别的函数之外移动类型定义。

3

定义外部结构(但之前)您的int main()

+0

哦,所以这是一个本地类型,因为我宣布它在主?这看起来像这使得工程类似于java类,但没有成员函数。 – Teofrostus 2012-07-26 22:05:27

+0

@Teofrostus:在C++中,'struct'与具有单一区别的类完全相同:默认访问说明符是公共的。也就是说,'struct's可以有成员函数,包括虚拟成员函数,继承或派生,有构造函数和析构函数...... – 2012-07-27 04:30:29

0

你还没有发布你的所有代码,但我猜你把struct Code ...放在你的主函数中。尝试在main的开头之上移动它。