Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 当C++;11初始化变量_C++_C++11_Clion - Fatal编程技术网

C++ 当C++;11初始化变量

C++ 当C++;11初始化变量,c++,c++11,clion,C++,C++11,Clion,我使用CLion作为IDE,它在IDE中报告一个错误 字段z必须初始化 它可以编译和运行。但是如果我改变constintz{3}到常数int z=3,IDE中不会报告任何错误。我的问题是,这究竟是我的代码的错误,还是只是IDE中的一个bug?这两种初始化方法之间有什么区别吗?您的IDE是否报告了此错误 #include <iostream> using namespace std; class Test { private: const int x = 3; int

我使用CLion作为IDE,它在IDE中报告一个错误

字段z必须初始化

它可以编译和运行。但是如果我改变
constintz{3}到<代码>常数int z=3,IDE中不会报告任何错误。我的问题是,这究竟是我的代码的错误,还是只是IDE中的一个bug?这两种初始化方法之间有什么区别吗?您的IDE是否报告了此错误

#include <iostream>
using namespace std;

class Test
{
private:
    const int x = 3;
    int y;
    const int z{3};
public:
    Test(int);
    int gety(){
        return y;
    }
};

Test::Test(int a){
    y=x+4;
}

int main()
{
    Test test(5);
    std::cout << test.gety() << std::endl;
    return 0;
}
#包括
使用名称空间std;
课堂测试
{
私人:
常数int x=3;
int-y;
常数int z{3};
公众:
测试(int);
int gety(){
返回y;
}
};
测试::测试(INTA){
y=x+4;
}
int main()
{
试验(5);
标准::cout
这是否真的是我的代码错误

代码中没有错误,没有问题

或者它只是IDE中的一个bug

无论产生错误消息的是什么,它都是一个bug。IDE在我的怀疑列表中排名靠前,但它可能是IDE传递消息的另一个工具

这两种初始化方法之间有什么区别吗


在此上下文中(默认成员初始值设定项)这两种语法在语义上是等价的。没有区别。

你在编译时看到了吗?如果是,你在使用哪个编译器?我在编译时没有看到。代码可以编译并运行。它只在IDE中报告。对于IDE,有几种方法可以修复它,例如删除常量,只需使用int'z{3}即可'或将其更改为'const int z=3'。如果您将上述代码复制并传递到编译器或IDE,您能看到问题吗?这是一个真正的错误还是IDE错误?您的代码是有效的。JetBrains issue tracker for CLion中似乎有许多报告的错误与此相关(或看起来足够类似)(带括号的init问题)。很可能是静态分析中的误报。可能很烦人,但代码应该很好。