#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. Закрытые элементы должны быть инициализированы в том порядке, в котором они объявлены.
(точнее, они инициализируются в том порядке, в котором они объявлены; поэтому он предупреждает вас, что порядок инициализации не будет таким, как вы указали в списке инициализации, на случай, если вы зависите от побочных эффектов этих инициализаций)