无法在 C++ 中创建结构向量
Posted
技术标签:
【中文标题】无法在 C++ 中创建结构向量【英文标题】:Cannot make a vector of structs in C++ 【发布时间】:2012-07-26 21:54:11 【问题描述】:我正在尝试执行以下操作:
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++ 编程。
【问题讨论】:
【参考方案1】:在 C++03 中,本地类(在函数内定义的类)不能用作模板参数。在 C++11 中取消了该限制,但如果您的编译器不支持此功能,您始终可以在命名空间级别将类型定义移到函数之外。
【讨论】:
【参考方案2】:在int main()
之外(但之前)定义结构。
【讨论】:
哦,原来是本地类型,因为我在 main 中声明了它?看起来这使得结构类似于 java 类,但没有成员函数。 @Teofrostus:在 C++ 中,struct
与具有一个区别的类完全相同:默认访问说明符是公共的。即struct
s可以有成员函数,包括虚成员函数,继承或者被派生,有构造函数和析构函数……【参考方案3】:
您尚未发布所有代码,但我猜您将struct Code ...
放在您的主函数中。尝试将它移到 main 开头的上方。
【讨论】:
以上是关于无法在 C++ 中创建结构向量的主要内容,如果未能解决你的问题,请参考以下文章