Russian Qt Forum
Ноябрь 23, 2024, 04:06 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: warning: 'Database::m_fileName' will be initialized after  (Прочитано 4906 раз)
8Observer8
Гость
« : Октябрь 15, 2014, 11:10 »

Привет!

Если компилятор предупреждает, значит что-то здесь не так и это можно исправить. Вроде бы ничего плохого в том, что я объявил переменные, а в конструкторе их инициализировал. Как исправить, чтобы не было предупреждений?

Цитировать
Database.h:17: warning: 'Database::m_fileName' will be initialized after [-Wreorder]
     std::string m_fileName;
                     ^

Цитировать
Database.h:16: warning:   'std::vector<std::basic_string<char> > Database::m_columnNames' [-Wreorder]
     std::vector<std::string> m_columnNames;
                                         ^

Цитировать
Database.cpp:4: warning:   when initialized here [-Wreorder]
 Database::Database(const std::string fileName,
 ^

Database.h
Код
C++ (Qt)
#ifndef DATABASE_H
#define DATABASE_H
 
#include <vector>
#include <string>
 
class Database
{
public:
   Database( const std::string fileName,
             const std::vector<std::string> &columnNames );
 
   void addRow( const std::vector<std::string> &row );
 
private:
   std::vector<std::string> m_columnNames;
   std::string m_fileName;
};
 
#endif // DATABASE_H
 

Database.cpp
Код
C++ (Qt)
 
#include "Database.h"
 
Database::Database(const std::string fileName,
                  const std::vector<std::string> &columnNames ) :
   m_fileName( fileName ),
   m_columnNames( columnNames )
{
 
}
 
void Database::addRow( const std::vector<std::string> &row )
{
 
}
 
Записан
kramer
Гость
« Ответ #1 : Октябрь 15, 2014, 11:27 »

У вас инициализаторы в конструкторе перечислены не в том порядке, что в объявлении класса. Поменяйте их местами, и ворнинг пропадет.
Записан
8Observer8
Гость
« Ответ #2 : Октябрь 15, 2014, 12:09 »

kramer, спасибо большое!
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #3 : Январь 26, 2015, 12:09 »

Тоже только что впервые с этим столкнулся в чужом коде.
Меня заинтересовал смысл ругательств. Вот ответ:
Код
C++ (Qt)
struct A {
   int i;
   int j;
   A() : j(0), i(j) { }
};
Чему равен i - не определено.
Записан
torwig
Самовар
**
Offline Offline

Сообщений: 134



Просмотр профиля
« Ответ #4 : Январь 26, 2015, 20:22 »

Нестатические члены класса инициализируются в порядке их объявления.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.137 секунд. Запросов: 22.