无法在 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 与具有一个区别的类完全相同:默认访问说明符是公共的。即structs可以有成员函数,包括虚成员函数,继承或者被派生,有构造函数和析构函数……【参考方案3】:

您尚未发布所有代码,但我猜您将struct Code ... 放在您的主函数中。尝试将它移到 main 开头的上方。

【讨论】:

以上是关于无法在 C++ 中创建结构向量的主要内容,如果未能解决你的问题,请参考以下文章

试图在 C++ 中创建一个包含结构的数组?

在 C++ 中跨类使用结构

如何用两列 C++ 从文本文件中填充向量

如何在 C++ 中创建向量的向量图?

在递归函数 C++ 中创建向量

如何在 C++ 中创建类对象的向量?