typedef std :: array时的编译错误

时间:2015-05-13 13:36:51

标签: c++ arrays compiler-errors stdarray

我使用inputTy(c ++ 11)定义了一个名为std::array的类型,该数组的维度被声明为外部常量整数d

namespace project {
  namespace types{
    extern const int d;
    typedef std::array<double, d> inputTy;
  }
}

为什么会出现这样的编译错误?

../../include/types.h:16:29: error: the value of ‘d’ is not usable in a constant expression
 typedef std::array<double, d> inputTy;
                             ^
../../include/types.h:15:18: note: ‘d’ was not initialized with a constant expression
 extern const int d;
              ^

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

您不能将extern const int用作数组大小,因为编译器不知道来自其他编译单元的常量的大小。

将您的设计更改为使用std::vector或其他容器来解决问题或将常量放在标题中并在typede fing之前包含它。