should be initialized in the member initialization list в c++
students.h:
#pragma once
struct Students
{
std::string name;
int raiting;
};
qwer.cpp:
#include <iostream>
#include "students.h"
int main()
{
Students Nick;
Nick.raiting = 1;
std::cout << Nick.raiting << std::endl;
return 0;
}
Выдает предупреждение. Что оно означает?:
students.h: In constructor ‘Students::Students()’:
students.h:3:8: warning: ‘Students::name’ should be initialized in the member initialization list [-Weffc++]
3 | struct Students
| ^~~~~~~~
students.h:3:8: warning: ‘Students::raiting’ should be initialized in the member initialization list [-Weffc++]
qwer.cpp: In function ‘int main()’:
qwer.cpp:6:11: note: synthesized method ‘Students::Students()’ first required here
6 | Students Nick;
| ^~~~
Ответы (1 шт):
Автор решения: AlexGlebe
→ Ссылка
Чтобы закрыть эти предупреждения можно поставить конструктор по-умолчанию.
struct Students
{
std::string name { } ;
int raiting { } ;
};
Тогда переменнаю raiting - всегда будет инициализирована нулём. Против забывчивых. А переменная name всегда уже будет инициализирована, вот это лажа компилятора (лишнее советует).