main
сделать.int main() {
wifi.access[0][0] = ssid;
wifi.access[0][1] = password;
// ...
}
wifi
?wifi.access[0] = { ssid, password };
?Wifi
как агрегатную структуру. Почему в полях должен быть именно массив? Почему тип элементов должен быть именно char*
, а не const char*
?char*
, а не std::string
? ему придется взять 4 байта по адресу &a
struct decoratedblock{
char a;
char zero[1];
char b;
char zero[1];
char* c;
};
struct decoratedblock{
char a;
char b;
char zero[2];
char* c;
};
bool
неявно приводится к int
? И в случае с false
ноль все еще остается литералом, который может трактоваться как NULL
по причинам совместимости. полной специализации
- не совсем понимаю. Ты имеешь в виду частное инстанцирование шаблона?enable_if
тут помогут, но они не нужны, т.к. это слишком сложная для такой задачи техника.
Значит контекст глобальный. Ожидаемо, в глобальном контексте то, что ты хочешь сделать, не сработает.
Для кода, который ты хочешь написать, тебе нужен контекст исполнения - это контекст любой функции.
Ты неправильно понимаешь значение слова
const
в этом месте.char
- значение можно менять.const char
- значение нельзя менять.char*
- указатель, который можно менять, на значение, которое можно менять.const char*
- указатель, который можно менять, на значение, которое нельзя менять.char* const
- указатель, который нельзя менять, на значение, которое можно менять.const char* const
- указатель, который нельзя менять, на значение, которое нельзя менять.Константный указатель на константный указатель на константное значение будет выглядеть так:
const char* const* const
.Строковые литералы в C++ являются константными, тип указателя для строкового литерала -
const char*
. Да и уже просто по смутному смыслу твоих действий в коде, ты не хочешь изменять символы в строке, ты хочешь только указатели на сроки менять.