Почему LinuxGCC допускает инициализацию неконстантного статического члена в классе, а MinGW — нет? ⇐ Linux
Почему LinuxGCC допускает инициализацию неконстантного статического члена в классе, а MinGW — нет?
Мы с другом работаем над школьным проектом, и нам нужно объявить статический член класса, по сути, счетчик объектов класса, который присваивает идентификатор каждому объекту.
Я использую Ubuntu и Linux GCC, а мой друг использует MinGW в Windows. Мы оба используем Eclipse IDE.
Мой исходный код приведен ниже. Запуск на моей машине с Linux работает. Попытка запустить его в Windows возвращает ошибку: «ISO C++ запрещает инициализацию в классе неконстантного статического члена Fahrzeug::p_iMaxID». Почему существует разница между компиляторами и как исправить ошибку, не написав еще 10 строк кода? (Если это вообще возможно).
Fahrzeug.h
#ifndef FAHRZEUG_H_ #define FAHRZEUG_H_ #include #include класс Фарцойг { публика: встроенный Фарцойг(); //Default-Конструктор встроенный Fahrzeug(std::string p_sName); встроенный ~Fahrzeug(); std::string getName() {return p_sName;}; int getID() {return p_iID;}; частный: std::string p_sName = ""; статический встроенный int p_iMaxID = 1; const int p_iID = p_iMaxID++; }; #endif /* FAHRZEUG_H_ */ Fahrzeug.cpp
#include "Fahrzeug.h" /* Конструктор по умолчанию*/ Fahrzeug::Fahrzeug() {std::cout
Мы с другом работаем над школьным проектом, и нам нужно объявить статический член класса, по сути, счетчик объектов класса, который присваивает идентификатор каждому объекту.
Я использую Ubuntu и Linux GCC, а мой друг использует MinGW в Windows. Мы оба используем Eclipse IDE.
Мой исходный код приведен ниже. Запуск на моей машине с Linux работает. Попытка запустить его в Windows возвращает ошибку: «ISO C++ запрещает инициализацию в классе неконстантного статического члена Fahrzeug::p_iMaxID». Почему существует разница между компиляторами и как исправить ошибку, не написав еще 10 строк кода? (Если это вообще возможно).
Fahrzeug.h
#ifndef FAHRZEUG_H_ #define FAHRZEUG_H_ #include #include класс Фарцойг { публика: встроенный Фарцойг(); //Default-Конструктор встроенный Fahrzeug(std::string p_sName); встроенный ~Fahrzeug(); std::string getName() {return p_sName;}; int getID() {return p_iID;}; частный: std::string p_sName = ""; статический встроенный int p_iMaxID = 1; const int p_iID = p_iMaxID++; }; #endif /* FAHRZEUG_H_ */ Fahrzeug.cpp
#include "Fahrzeug.h" /* Конструктор по умолчанию*/ Fahrzeug::Fahrzeug() {std::cout
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как преобразовать инициализацию копии в инициализацию прямого списка при проверке clang-tidy?
Anonymous » » в форуме C++ - 0 Ответы
- 25 Просмотры
-
Последнее сообщение Anonymous
-
-
-
В mingw/msys2 используйте «pip install abc» или «pacman -S mingw-w64-i686-python-abc»?
Anonymous » » в форуме Python - 0 Ответы
- 100 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Может ли инициализатор элемента конструктора включить инициализацию другого члена?
Anonymous » » в форуме C++ - 0 Ответы
- 10 Просмотры
-
Последнее сообщение Anonymous
-