为什么我无法创建我的数组(C++)?

Dan*_*nny 6 c++ arrays

我有以下代码:

#pragma once

class Matrix{
public:
    Matrix();
    ~Matrix();

protected:
    float mat[3] = {0.0, 0.0, 0.0};
};
Run Code Online (Sandbox Code Playgroud)

但我收到了错误float mat[3] = {0.0, 0.0, 0.0};.它说错误C2059:语法错误:'{'和错误C2334:'{'之前的意外标记; 跳过明显的功能体.

我正确地创建了数组吗?那有什么问题呢?

das*_*ght 11

C++ 03不支持成员字段的内联初始化.您需要将此初始化移动到构造函数中,例如(链接到演示):

class Matrix{
public:
    Matrix() : mat({0.0, 0.0, 0.0}) {};
    ~Matrix();

protected:
    float mat[3];
};
Run Code Online (Sandbox Code Playgroud)

上面定义了内联构造函数; 如果单独定义构造函数,请将初始化列表(即冒号:和左大括号之间的代码{)与构造函数定义一起移动.

  • 我差点用你说C++不支持它:)但你的风格似乎就是在你开始输入然后继续编辑时发布:) (3认同)

小智 7

在批准C++ 11标准之前,C++ 不支持非静态数据成员初始值设定项.要使用此功能,您必须具有支持C++ 11的编译器.此外,它通常默认禁用,因此您可能需要手动启用它.对于GCC,请指定std=c++11.对于Clang来说,做-std=c++11 -stdlib=libc++.如果您使用其他内容,请查看文档.