Eclipse выдает предупреждение компилятору о том, что MingGW не

#c

#c

Вопрос:

Кое-что о том, как я инициализирую своих членов частного класса. Предупреждающие сообщения не имеют смысла…Я пытался посмотреть, были ли они объединены .. но, похоже, они не были .. это то, что говорит Eclipse. Извините, я не могу отформатировать его намного лучше.

Вот сообщение компилятора:

 Description                               Resource  Path    Location    Type
'sl_list<int>::node_1* sl_list<int>::head'  test_a      line 13 C/C   Problem
when initialized here                       test_a      line 18 C/C   Problem
'sl_list<int>::count' will be initialized   test_a      line 14 C/C   Problem
  

Соответствующий код — вызов linked_list

 #include "c_include_list.cpp"
#include "c_linked_list.cpp"

using namespace std;

int main() {
    cout << "sl_list" << endl;
    sl_list<int> sl_list_object;
}
  

Соответствующий код — внедрение linked_list

 template <class T1> class sl_list
  {
  private:

      class node_1 
      {
      public:     
        T1 data; 
        node_1 *next;
        node_1(T1 data, node_1 *next = NULL) : data(data), next(next) {}        
      };

    node_1 *head;  // line 13
      int count; // line 14

  public:

    sl_list() : count(0), head(NULL){} // line 18
  

Комментарии:

1. Нет необходимости добавлять слово «завершено» к заголовку; мы видим, что вы приняли ответ.

Ответ №1:

Ответ довольно прост: инициализируйте элементы в порядке объявления.

 sl_list() : head(NULL), count(0){}
  

По умолчанию это всего лишь предупреждение, поэтому Eclipse, вероятно, передал компилятору флаги -Wall и -Werror.

Ответ №2:

MinGW также должен выдавать вам это предупреждение с помощью -Wall. Закрытые элементы должны быть инициализированы в том порядке, в котором они объявлены.

(точнее, они инициализируются в том порядке, в котором они объявлены; поэтому он предупреждает вас, что порядок инициализации не будет таким, как вы указали в списке инициализации, на случай, если вы зависите от побочных эффектов этих инициализаций)