typedef std::array 时出现编译错误
Compilation error when typedef an std::array
我使用 std::array
(c++11) 定义了一个名为 inputTy
的类型,数组的维数声明为外部常量整数 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;
^
感谢您的帮助。
您不能使用 extern const int
作为数组大小,因为编译器不知道来自其他编译单元的常量的大小。
更改您的设计以使用 std::vector
或其他一些容器来解决问题,或者将常量放在 header 中并将其包含在 typede
fing 之前。
我使用 std::array
(c++11) 定义了一个名为 inputTy
的类型,数组的维数声明为外部常量整数 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;
^
感谢您的帮助。
您不能使用 extern const int
作为数组大小,因为编译器不知道来自其他编译单元的常量的大小。
更改您的设计以使用 std::vector
或其他一些容器来解决问题,或者将常量放在 header 中并将其包含在 typede
fing 之前。