когда перемещаю в .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;
Виртуальный выделенный сервер (VDS) становится отличным выбором
Все делаю по этой инструкции, но выходит ошибка qtsqldrivers-configpri: No such file or directoryЭтого файла у меня вообще нет на компьютере
Делаю проект с компиляцией под несколько платформ на c++Некоторые файлы нужно прогнать утилитой (для простоты понимания скажем, что это транспилятор)
Есть геймпад Aceline CG-1 на USB, который нужно подключить по Serial к Arduino NanoКак можно отслеживать нажатия кнопок (т