【问题标题】:Implicit instantiation of undefined template 'std::__1::array<int, 3>'未定义模板 'std::__1::array<int, 3>' 的隐式实例化
【发布时间】:2013-08-10 20:47:37
【问题描述】:

我复制并粘贴了这段确切的代码,在我的 IDE 中找到了 here,但出现错误,我不明白为什么会发生这种情况并想了解原因。

std::array<int, 3> a2 = {1, 2, 3}; // except after =

【问题讨论】:

  • 这是用-std=c++11编译的吗?
  • 是的,确定了
  • 它是哪个编译器(和版本)?我还没有看到 std::array 有什么奇怪的地方,但我有其他人看到的,你 #include &lt;array&gt; 也有吗?
  • 谢谢,这是一个愚蠢的错误,我认为它已经像 std::vector 一样被包含了

标签: c++ arrays include stdarray


【解决方案1】:

一定要记住#include &lt;array&gt;

但如果你不包含 any 标准标题,你应该得到一个 关于 std 未定义的更简单错误。

【讨论】:

    【解决方案2】:

    如果#include &lt;array&gt; 不起作用,因为它不适合我,那么请使用#include &lt;vector&gt;。我是新手,无法解释为什么会这样,所以如果您感到困惑,我深表歉意。

    【讨论】:

    • 您的向量实现可能包括自己的数组,但不能依赖它。如果您使用的是古老的编译器,请改用 #include &lt;array&gt; 并传递适当的编译选项(如 -std=c++11
    • 确保您使用的是 C++ 11 编译器
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多