когда перемещаю в .h файл объявление вектора двумерного:
...
class PollutionZone : public QWidget
{
Q_OBJECT
public:
explicit PollutionZone(QWidget *parent = nullptr);
~PollutionZone();
const int X_MAX = 500; // Размеры накладываемой сетки
const int Y_MAX = 500;
std::vector <std::vector<bool>> MapWaterside(Y_MAX, std::vector <bool>(X_MAX));
...
};
Появляется ошибка:C++ requires a type specifier for all declarations Ругается на Y_MAX.
Ругается на самом деле на
std::vector <std::vector<bool>> MapWaterside(Y_MAX, std::vector <bool>(X_MAX));
Во-первых, в определении класса не допускается непосредственное применение ()-инициализаторов к членам класса. Допустимы только {} или = инициализаторы. В вашем случае можно поступить так
std::vector<std::vector<bool>> MapWaterside = std::vector(Y_MAX, std::vector <bool>(X_MAX));
или так
const std::size_t X_MAX = 500;
const std::size_t Y_MAX = 500;
std::vector <std::vector<bool>> MapWaterside = { Y_MAX, std::vector <bool>(X_MAX) };
(Обратите внимание, что тип int напрямую неприменим внутри {}-инициализатора для задания размера вектора, ибо получается сужающее преобразование.)
Во-вторых, не забывайте, что инициализатор для нестатического члена класса - это лишь "заготовка", которая физически будет использована только позже - в коде конструктора класса. Причем там у вас будет возможность "перекрыть" инициализаторы, указанные в определении класса. Это относится и к MapWaterside, и к X_MAX и Y_MAX тоже. Порядок инициализации, как всегда, соответствует порядку объявления. То есть если вы напишете в конструкторе
PollutionZone::PollutionZone(QWidget *parent) : Y_MAX(1000)
{}
то Y_MAX получит значение 1000 и вектор будет проинициализирован для Y_MAX = 1000. Вы хотели достичь такого эффекта? Вам нужна такая возможность? Если нет, то возможно вам лучше подойдут
static constexpr int X_MAX = 500; // или `unsigned`, или `std::size_t`
static constexpr int Y_MAX = 500;
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости