编译器无法识别std::vector的成员初始值设定项



我想初始化一个std::向量,使其具有特定的长度。在.hpp文件中,我使用

#include <vector>
class foo
{
foo(){};
~foo(){};
std::vector<double> pressure (4,0); //vector 4 elements = 0
void readPressure()
{
pressure.at(0) = 1;
pressure.at(1) = 2;
pressure.at(2) = 3;
pressure.at(3) = 4;
}
...
};

但我得到了错误:

error: expected identifier before numeric constant
std::vector<double> pressure(4,0);
^
error: expected ',' or '...' before numeric constant

我读到这可能是由于没有使用C++11,但我在我的makefile 中指定了

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_FLAGS_RELEASE "-O3")

我正在树莓4上编译,g++版本是8.3

***编辑.hpp文件

默认成员初始值设定项(由于C++11(仅支持大括号和等号初始值设定。例如

class foo
{
std::vector<double> pressure = std::vector<double>(4,0); //vector 4 elements = 0
...
};

BTW:我们不能将braked初始化器用作std::vector<double> pressure{4,0};,因为它会初始化包含两个值为40的元素的vector,这不是您想要的。