имею структуру
struct tree
{
char name[9];
int count;
};
при попытке определить ее в main
tree.name= "12345678";
Выходит ошибка
error C2440: =: невозможно преобразовать 'const char [9]' в 'char [9]'
введите сюда код
Присваивал так же с помощью символов '1','2','3' и тд ошибка
error C2440: =: невозможно преобразовать 'char' в 'char [9]'
Создавал отдельно массив размеров [9] и присваивал его, но была ошибка
error C2059: синтаксическая ошибка: константа
error C2106: =: левый операнд должен быть левосторонним значением
Как же все таки сделать чтоб присвоить и программа не ругалась?
Массивы непосредственно не присваиваются!
Вот так - другое дело:
strcpy(tree.name,"12345678");
В своем вопросе вы говорите о каком-то "определении", но в коде никакого определения не видно.
Если бы вы действительно делали определение объекта типа tree
tree t;
то в таком определении вы могли бы указать инициализатор
tree t = { "12345678" };
или сделать то же самое через через присваивание
t = { "12345678" };
Однако в обоих случаях инициализируется/присваивается весь объект, а не отдельное поле, т.е. происходит обнуление t.count
.
Присвоить отдельный голый массив нельзя. Либо используйте std::strcpy
, либо замените char name[9];
на std::array<char, 9>
(или даже на std::string
)
struct tree
{
std::array<char, 9> name;
int count;
};
...
t.name = { "12345678" };
Clang принимает просто
t = { "12345678" };
а GCC - нет. В GCC требуется
t = tree{ "12345678" };
Очевидно прав Clang (https://stackoverflow.com/questions/21555026/initializing-stdarraychar-x-member-in-constructor-using-string-literal-gcc)
Если вы напишете так:
struct tree
{
char name[9] = "12345";
int count;
};
То здесь char name[9] = "123445";
является определением массива. Это не будет ошибкой. Но вот tree().name = "12345"
, это уже присваивание, что уже невозможно выполнить (скобки для вызова конструктора)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Пытаюсь создать приложение с графическим интерфейсом копирую код из стандартного примера визуалки 2017 в визуалку 2010 выдает кучу ошибок линковки...
Всем привет, я создал две таблицы User и Account Один user может иметь несколько аккаунтов