首页 > 解决方案 > 编译器无法识别 std::vector 的成员初始值设定项

问题描述

我想初始化一个 std::vector 以具有特定的长度。在我使用的 .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++c++11gcccmake

解决方案


默认成员初始化器(C++11 起)仅支持大括号和等号初始化器。例如

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

顺便说一句:我们不能使用支撑初始化器 as std::vector<double> pressure{4,0};,因为它会vector用值4和初始化包含的 2 个元素0,这不是你想要的。


推荐阅读