变量“ MySet :: group”未初始化。始终初始化成员变量(类型6)

时间:2020-08-24 08:33:46

标签: c++

我有问题:

变量'MySet :: group'未初始化。总是初始化成员变量(类型6)

我不明白这是什么错误,在我看来,该变量已被初始化。

这是源文件

 MySet::MySet()
{   
    int* group = NULL;
}

这是头文件

class MySet
{
private:
    int* group;
    int size;

 public:
    MySet();                          //defult- creating an empty group

2 个答案:

答案 0 :(得分:1)

MySet::group(类成员)未初始化。在构造函数中,初始化一个 local 变量,该变量将在构造函数完成后立即消失。

更改为

MySet::MySet()
{   
    group = NULL;
}

或者更好,使用member initializer list

MySet::MySet() : group {NULL}
{   
}

答案 1 :(得分:0)

您正在做的是声明和初始化一个与成员名称相同的局部变量。

有两种可能的方法来初始化成员变量。

传统方法是使用构造函数的初始化程序列表:

MySet::MySet() : group(nullptr) 
{
}

一种更现代的方法(自C ++ 11起)是在成员的声明中提供初始化程序:

class MySet
{
    // ...
    int* group = nullptr;
    // ...
};

如果您这样写:

MySet::MySet() 
{
    group = nullptr;
}

这不是初始化,而是赋值。