Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> инициализация структур, сложная инициализация 
V
    Опции темы
fuckingniger
Дата 19.6.2011, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 1.10.2010

Репутация: нет
Всего: 1



Код

struct wall_coord    
{
    COORD coord_1;
    COORD coord_2;
};


как инициализировать такую структуру?
PM MAIL   Вверх
boostcoder
Дата 19.6.2011, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



предположу - как обычно.
Код


struct COORD {
   int X;
   int Y;
};

struct wall_coord {
   COORD coord_1;
   COORD coord_2;
};

// ...

wall_coord wall = {{1, 2}, {3, 4}};

PM WWW   Вверх
fuckingniger
Дата 19.6.2011, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 1.10.2010

Репутация: нет
Всего: 1



я так пробовал
Код

wall_all[0]={ {shift_l+2,shift_h+2},{shift_l+2,shift_h+length-5}};


shift_l  и прочие переменные это int

Код

1>------ Построение начато: проект: snake_2, Конфигурация: Debug Win32 ------
1>Построение начато 19.06.2011 19:21:48.
1>InitializeBuildStatus:
1>  Обращение к "Debug\snake_2.unsuccessfulbuild".
1>ClCompile:
1>  main.cpp
1>c:\users\redwhite\documents\visual studio 2010\projects\snake_2\main.cpp(245): warning C4244: аргумент: преобразование "time_t" в "unsigned int", возможна потеря данных
1>c:\users\redwhite\documents\visual studio 2010\projects\snake_2\main.cpp(288): error C2059: синтаксическая ошибка: {
1>c:\users\redwhite\documents\visual studio 2010\projects\snake_2\main.cpp(288): error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>c:\users\redwhite\documents\visual studio 2010\projects\snake_2\main.cpp(288): error C2143: синтаксическая ошибка: отсутствие ";" перед "}"
1>c:\users\redwhite\documents\visual studio 2010\projects\snake_2\main.cpp(288): error C2143: синтаксическая ошибка: отсутствие ";" перед ","
1>c:\users\redwhite\documents\visual studio 2010\projects\snake_2\main.cpp(289): error C2065: wall_all: необъявленный идентификатор
1>c:\users\redwhite\documents\visual studio 2010\projects\snake_2\main.cpp(289): error C2227: выражение слева от "->coord_1" должно указывать на тип класса, структуры или объединения либо на универсальный тип
1>          тип: 'unknown-type'
1>c:\users\redwhite\documents\visual studio 2010\projects\snake_2\main.cpp(289): error C2228: выражение слева от ".X" должно представлять класс, структуру или объединение
1>c:\users\redwhite\documents\visual studio 2010\projects\snake_2\main.cpp(289): error C2065: wall_all: необъявленный идентификатор
1>c:\users\redwhite\documents\visual studio 2010\projects\snake_2\main.cpp(289): error C2227: выражение слева от "->coord_2" должно указывать на тип класса, структуры или объединения либо на универсальный тип
1>          тип: 'unknown-type'
1>c:\users\redwhite\documents\visual studio 2010\projects\snake_2\main.cpp(289): error C2228: выражение слева от ".X" должно представлять класс, структуру или объединение
1>c:\users\redwhite\documents\visual studio 2010\projects\snake_2\main.cpp(289): error C2065: wall_all: необъявленный идентификатор
1>c:\users\redwhite\documents\visual studio 2010\projects\snake_2\main.cpp(289): error C2227: выражение слева от "->coord_1" должно указывать на тип класса, структуры или объединения либо на универсальный тип
1>          тип: 'unknown-type'
1>c:\users\redwhite\documents\visual studio 2010\projects\snake_2\main.cpp(289): error C2228: выражение слева от ".Y" должно представлять класс, структуру или объединение
1>c:\users\redwhite\documents\visual studio 2010\projects\snake_2\main.cpp(289): error C2065: wall_all: необъявленный идентификатор
1>c:\users\redwhite\documents\visual studio 2010\projects\snake_2\main.cpp(289): error C2227: выражение слева от "->coord_2" должно указывать на тип класса, структуры или объединения либо на универсальный тип
1>          тип: 'unknown-type'
1>c:\users\redwhite\documents\visual studio 2010\projects\snake_2\main.cpp(289): error C2227: выражение слева от "->Y" должно указывать на тип класса, структуры или объединения либо на универсальный тип
1>c:\users\redwhite\documents\visual studio 2010\projects\snake_2\main.cpp(289): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\redwhite\documents\visual studio 2010\projects\snake_2\main.cpp(289): error C2365: draw_area: переопределение; предыдущим определением было "функция"
1>          c:\users\redwhite\documents\visual studio 2010\projects\snake_2\main.cpp(48): см. объявление "draw_area"
1>c:\users\redwhite\documents\visual studio 2010\projects\snake_2\main.cpp(289): error C2078: слишком много инициализаторов
1>c:\users\redwhite\documents\visual studio 2010\projects\snake_2\main.cpp(290): error C2059: синтаксическая ошибка: }
1>c:\users\redwhite\documents\visual studio 2010\projects\snake_2\main.cpp(290): error C2143: синтаксическая ошибка: отсутствие ";" перед "}"
1>c:\users\redwhite\documents\visual studio 2010\projects\snake_2\main.cpp(290): error C2059: синтаксическая ошибка: }
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:01.48
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========



Добавлено через 53 секунды
Код

struct wall_coord wall_all[7];

PM MAIL   Вверх
ChihPih
Дата 19.6.2011, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 532
Регистрация: 3.12.2006

Репутация: нет
Всего: 22



Цитата(fuckingniger @ 19.6.2011,  21:24)
я так пробовал
Код

wall_all[0]={ {shift_l+2,shift_h+2},{shift_l+2,shift_h+length-5}};

...

В этом коде вы ее не инициализируете, а уже присваиваете значение. Так присваивать значения нельзя...

Это сообщение отредактировал(а) ChihPih - 19.6.2011, 18:29


--------------------
www.info-x.org - информационный ресурс о ОС FreeBSD. Форум.
PM MAIL WWW Jabber   Вверх
boostcoder
Дата 19.6.2011, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Код

struct COORD {
   int X;
   int Y;
};

struct wall_coord {
   COORD coord_1;
   COORD coord_2;
};

// ...

int main() {
   wall_coord wall[2];
   int shift_l, shift_h, length;
   
   wall[0] = { {shift_l+2,shift_h+2},{shift_l+2,shift_h+length-5}};
}

http://liveworkspace.org/code/4a17ff7e495a...3cb3f6015178666

хз что за трудности у тебя...

Добавлено через 1 минуту и 25 секунд
Цитата(ChihPih @  19.6.2011,  18:29 Найти цитируемый пост)
Так присваивать значения нельзя

как видишь, в С++ можно. возможно в Си нельзя.. не помню...
PM WWW   Вверх
ChihPih
Дата 19.6.2011, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 532
Регистрация: 3.12.2006

Репутация: нет
Всего: 22



Цитата(boostcoder @ 19.6.2011,  21:31)
Код

struct COORD {
   int X;
   int Y;
};

struct wall_coord {
   COORD coord_1;
   COORD coord_2;
};

// ...

int main() {
   wall_coord wall[2];
   int shift_l, shift_h, length;
   
   wall[0] = { {shift_l+2,shift_h+2},{shift_l+2,shift_h+length-5}};
}

http://liveworkspace.org/code/4a17ff7e495a...3cb3f6015178666

хз что за трудности у тебя...

Добавлено @ 18:33
Цитата(ChihPih @  19.6.2011,  18:29 Найти цитируемый пост)
Так присваивать значения нельзя

как видишь, в С++ можно. возможно в Си нельзя.. не помню...

У меня этот код gnu c++ компилер не смог скомпилить - ошибку выдал.


--------------------
www.info-x.org - информационный ресурс о ОС FreeBSD. Форум.
PM MAIL WWW Jabber   Вверх
boostcoder
Дата 19.6.2011, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



ChihPih, версия какая?

Добавлено через 30 секунд
Цитата(ChihPih @  19.6.2011,  18:41 Найти цитируемый пост)
ошибку выдал

так покажи. любопытно же.

PM WWW   Вверх
ChihPih
Дата 19.6.2011, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 532
Регистрация: 3.12.2006

Репутация: нет
Всего: 22



Цитата(boostcoder @ 19.6.2011,  21:41)
ChihPih, версия какая?

Добавлено @ 18:42
Цитата(ChihPih @  19.6.2011,  18:41 Найти цитируемый пост)
ошибку выдал

так покажи. любопытно же.

Код

$ g++ -v
Using built-in specs.
Target: i386-undermydesk-freebsd
Configured with: FreeBSD/i386 system compiler
Thread model: posix
gcc version 4.2.1 20070719  [FreeBSD]


Добавлено через 1 минуту
Код

$ g++ -o app main.c
main.c: In function 'int main()':
main.c:18: error: expected primary-expression before '{' token
main.c:18: error: expected `;' before '{' token
main.c:20: error: expected `}' at end of input


Это сообщение отредактировал(а) ChihPih - 19.6.2011, 18:43


--------------------
www.info-x.org - информационный ресурс о ОС FreeBSD. Форум.
PM MAIL WWW Jabber   Вверх
boostcoder
Дата 19.6.2011, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



упс..
правильно!
это же initializer_list из с++1х.

сорри что ввел в заблуждение.
ты прав - это присваивание.
просто на LWS добавлен влаг "-std=c++0x"

Добавлено через 56 секунд
Цитата(ChihPih @  19.6.2011,  18:42 Найти цитируемый пост)
gcc version 4.2.1

ну да. этот еще не знал что в будущем такое будет возможно smile

Добавлено через 1 минуту и 37 секунд
а попробуй добавить флаг:-std=c++0x
PM WWW   Вверх
ChihPih
Дата 19.6.2011, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 532
Регистрация: 3.12.2006

Репутация: нет
Всего: 22



Цитата(boostcoder @  19.6.2011,  21:44 Найти цитируемый пост)
а попробуй добавить флаг:-std=c++0x

Не сработает, он не знает такого стандарта...

Это сообщение отредактировал(а) ChihPih - 19.6.2011, 18:51


--------------------
www.info-x.org - информационный ресурс о ОС FreeBSD. Форум.
PM MAIL WWW Jabber   Вверх
boostcoder
Дата 19.6.2011, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



понятно.
но ТС использует 2010 студию, судя по выводу:
Цитата

c:\users\redwhite\documents\visual studio 2010

может там чего-то нужно включать ручками. я не в курсе.
PM WWW   Вверх
fuckingniger
Дата 19.6.2011, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 1.10.2010

Репутация: нет
Всего: 1



на 2010 никак не заработает ?
PM MAIL   Вверх
volatile
Дата 19.6.2011, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Может ограничиться стандартным С++ ?
Код

struct wall_coord {
   COORD coord_1;
   COORD coord_2;

   wall_coord (int x1=0, int y1=0, int x2=0, int y2=0)
   {
      coord_1.X=x1;
      coord_1.Y=y1;
      coord_2.X=x2;
      coord_2.Y=y2;
   }
};


После этого можно инициализировать так:
Код

wall_coord name (1, 2, 3, 4);

Цитата(fuckingniger @  19.6.2011,  18:24 Найти цитируемый пост)
я так пробовал
wall_all[0]={ {shift_l+2,shift_h+2},{shift_l+2,shift_h+length-5}};

А присваивать так:
Код

wall_all[0] = wall_coord(shift_l+2, shift_h+2, shift_l+2, shift_h+length-5);


PM MAIL   Вверх
fuckingniger
Дата 19.6.2011, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 1.10.2010

Репутация: нет
Всего: 1



  ну да, пришлось примерно так и сделать.
PM MAIL   Вверх
borisbn
Дата 20.6.2011, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Цитата(fuckingniger @  19.6.2011,  19:00 Найти цитируемый пост)
на 2010 никак не заработает ?

2010-я студия заявляет, что поддерживает C++0x, но на самом деле она поддерживает всего пару фишек оттуда. И initialize-list в них не входит :(

Цитата(fuckingniger @  19.6.2011,  21:04 Найти цитируемый пост)
  ну да, пришлось примерно так и сделать.

почему "пришлось" ? IMHO у volatile самый кошерный вариант  smile 


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0588 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.