【问题标题】:Cannot make a vector of structs in C++无法在 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++ 编程。

【问题讨论】:

    标签: c++ vector struct


    【解决方案1】:

    在 C++03 中,本地类(在函数内定义的类)不能用作模板参数。在 C++11 中取消了该限制,但如果您的编译器不支持此功能,您始终可以在命名空间级别将类型定义移到函数之外。

    【讨论】:

      【解决方案2】:

      int main() 之外(但之前)定义结构。

      【讨论】:

      • 哦,原来是本地类型,因为我在 main 中声明了它?看起来这使得结构类似于 java 类,但没有成员函数。
      • @Teofrostus:在 C++ 中,struct 与具有一个区别的类完全相同:默认访问说明符是公共的。即structs可以有成员函数,包括虚成员函数,继承或者被派生,有构造函数和析构函数……
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2019-12-01
        • 1970-01-01
        • 2020-10-26
        • 1970-01-01
        • 2023-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-08
        相关资源
        最近更新 更多