Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/21: Рейтинг темы: голосов - 21, средняя оценка - 5.00
 Аватар для LineStown
72 / 71 / 8
Регистрация: 04.08.2010
Сообщений: 434

Инициализация структуры через точку

30.11.2012, 18:12. Показов 4163. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго
юзаю MVS2012

Проблема
есть структура
C++
1
2
3
4
5
struct ST 
{
    int a;
    int b;
};
Пытаюсь инициализировать её
C++
1
ST st[]={{.a=5,.b=2},{.a=2,.b=3}};
Не компилируется, хотя так вроде разрешено делать (в xCode без проблем)
мб кто сталкивался
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.11.2012, 18:12
Ответы с готовыми решениями:

Инициализация структуры
Приветствую всех. Есть такой код: typedef struct { char a; char b; } ST; ST b = { "abcde", "fghij" }; Компилятор...

инициализация структуры
Всем привет, нужно достать данные о DEP и ASLR каждого процесса, написал такую вещь void GetDepAndASLR(DWORD ProcID) { HANDLE...

Инициализация структуры
Есть структура struct msg quest; struct msg { double clientId; size_t cash; char message; };

12
 Аватар для DiffEreD
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
30.11.2012, 18:18
Добавьте конструктор в структуру.
0
 Аватар для LineStown
72 / 71 / 8
Регистрация: 04.08.2010
Сообщений: 434
30.11.2012, 18:26  [ТС]
к сожалению, добавление конструктора ничего не дало
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct ST
{
    ST(){};
    ST(int aa,int bb)
    {
        a=aa;
        b=bb;
    }
    int a;
    int b;
};
int main()
{
    ST st[]={{.a=1,.b=2},{.a=2,.b=1}};
    return 0;
}
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
30.11.2012, 18:37
LineStown, так компилится
C++
1
2
3
4
5
6
7
8
9
10
11
struct ST
{
    int a;
    int b;
};
 
int main()
{
    ST st[]={ {1, 2}, {2, 1} };
    return 0;
}
0
 Аватар для LineStown
72 / 71 / 8
Регистрация: 04.08.2010
Сообщений: 434
30.11.2012, 18:38  [ТС]
go, спасибо конечно, но вопрос конкретно про такую инициализацию
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
30.11.2012, 18:43
Цитата Сообщение от LineStown Посмотреть сообщение
про такую инициализацию
Это какую такую? Вот так правильно нужно делать. Инициализация в конструкторе. А переменные лучше в приват засунуть
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct ST
{
    ST(int aa) { a = aa; }
    ST(int aa,int bb)
    {
        a=aa;
        b=bb;
    }
    int a;
    int b;
};
 
int main()
{
    ST st[]={ ST(1), ST(2, 4) };
}
0
 Аватар для LineStown
72 / 71 / 8
Регистрация: 04.08.2010
Сообщений: 434
30.11.2012, 18:48  [ТС]
go, объясню в кратце
исходя из википедии
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct str_name
{
        private:
                int         member_1;
                float       member_2;
        public:
                std::string member_3;
        // ...
};
// примеры инициализации структуры.
str_name struct0;
str_name struct1 = {1, 3.1416, "doit" /* ... */};
str_name struct2 = {member_1:2, member_2:3.1416, member_3:"doit" /* ... */};
str_name struct2 = {.member_1=2, .member_2=3.1416, .member_3="doit" /* ... */};
все корректно (последний пример)
проект кросс платформенный, в xCode(OS X) все прекрасно работает, в студии под винду не хочет работать, вопрос в том почему
0
 Аватар для v.a.l.i.d
425 / 390 / 113
Регистрация: 21.09.2012
Сообщений: 913
30.11.2012, 19:00
C++
1
ST s[] = { {s[0].a=2, s[0].b=3}, {s[1].a=4, s[1].b=5} };
0
~ Эврика! ~
 Аватар для OhMyGodSoLong
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
30.11.2012, 19:01
Подобная инициализация — это стандартная возможность языка Си.

Естественно, компиляторы Си++ не обязаны её поддерживать, но могут в качестве расширения. Равно как и инициализацию вида
member_2 : 3.1416
1
 Аватар для LineStown
72 / 71 / 8
Регистрация: 04.08.2010
Сообщений: 434
30.11.2012, 19:04  [ТС]
~OhMyGodSoLong~, вот я собственно и интересуюсь, может ли студия понимать такие обороты
0
~ Эврика! ~
 Аватар для OhMyGodSoLong
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
30.11.2012, 19:07
Как вы убедились, не может. В стандарте Си++ этого нет. Для Си Студия поддерживает только старый стандарт, где этого тоже нет. В расширениях Microsoft этого тоже нет.
0
 Аватар для LineStown
72 / 71 / 8
Регистрация: 04.08.2010
Сообщений: 434
30.11.2012, 19:11  [ТС]
спасибо за ответ
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
30.11.2012, 20:50
Цитата Сообщение от LineStown Посмотреть сообщение
str_name struct0;
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Подобная инициализация — это стандартная возможность языка Си.
Только вот он такое объявление не поддерживает

Да и модификаторы доступа тоже взяты с С++. Интересно, как вы собираетесь к привэйт членам получить доступ.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.11.2012, 20:50
Помогаю со студенческими работами здесь

Инициализация членов структуры
Здравствуйте. Имеется код: #include <iostream> struct Pizza { char name; double diametr; double weidth; };

Инициализация POD-структуры C++11
1. Можно ли так проинициализировать массив, чтоб не создавать конструктор ? struct A { int a = 0; void* ptr =...

Структуры, инициализация переменных
Возможно ли как-либо реализовать такой концепт: Если что-то там, то структура содержит N переменных, если НЕ что-то там, то содержит M? ...

Инициализация текстовых полей структуры
День добрый форумчане, поделитесь мудростью, пишу задание, но в ходе выполнения(в принципе как и всегда) возникла проблема, struct.name,...

Инициализация всех полей структуры
Всем привет. struct sFoo { int a; char b; struct {


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru