我有问题:
变量'MySet :: group'未初始化。总是初始化成员变量(类型6)
我不明白这是什么错误,在我看来,该变量已被初始化。
这是源文件
MySet::MySet()
{
int* group = NULL;
}
这是头文件
class MySet
{
private:
int* group;
int size;
public:
MySet(); //defult- creating an empty group
答案 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;
}
这不是初始化,而是赋值。