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

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

30.11.2012, 18:12. Показов 4096. Ответов 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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru