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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как правильно заполнить структуру? 
V
    Опции темы
Alca
Дата 14.8.2008, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 7
Всего: 50



Как правильно заполнить структуру?
Код

typedef struct {
    std::string sVar1; 
    std::string sVar2; 
} SMystruct, *PSMystruct;



--------------------
PM WWW ICQ Skype Jabber   Вверх
SaDFromSpb
Дата 14.8.2008, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



SMystruct s = {"раз", "два"};


--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
LavYaAll
Дата 14.8.2008, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 62
Регистрация: 1.5.2008

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



Ну или так: 
Код

SMystruct SMystruct1;
SMystruct1.sVar1 = "Трах";
SMystruct1.sVar2 = "Тибидох";

О чем вопрос?  Мы наверное что-то не поняли. smile 

Это сообщение отредактировал(а) LavYaAll - 14.8.2008, 18:06
PM   Вверх
Alca
Дата 14.8.2008, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 7
Всего: 50



А так правильно?
Код

SMystruct g_stMystruct;
g_stMystruct.sVar1 = "раз";
g_stMystruct.sVar2 = "два";

Просто чувак Daevaorn втирал мне следующее:
Цитата

А кто вам сказал, что так заполняют структуры?

http://forum.vingrad.ru/forum/topic-224443.html

Это сообщение отредактировал(а) Alca - 14.8.2008, 18:00


--------------------
PM WWW ICQ Skype Jabber   Вверх
Lazin
Дата 14.8.2008, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(Alca @ 14.8.2008,  17:56)
А так правильно?
Код

SMystruct g_stMystruct;
g_stMystruct.sVar1 = "раз";
g_stMystruct.sVar2 = "два";

смотря где
если внутри функции то правильно
PM MAIL Skype GTalk   Вверх
Alca
Дата 14.8.2008, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 7
Всего: 50



А что структура не может быть глобальной?
А если она глобальная то ее надо как-то по-другому заполнять????


--------------------
PM WWW ICQ Skype Jabber   Вверх
LavYaAll
Дата 14.8.2008, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 62
Регистрация: 1.5.2008

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



Alca, нет. Имеется в виду, что заполнять ее ты при помощи оператора '=' сможешь только в какой-либо функции.
PM   Вверх
Alca
Дата 14.8.2008, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 7
Всего: 50



Так она у меня там и заполняется.


--------------------
PM WWW ICQ Skype Jabber   Вверх
SaDFromSpb
Дата 14.8.2008, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(LavYaAll @  14.8.2008,  18:04 Найти цитируемый пост)
Alca, нет. Имеется в виду, что заполнять ее ты при помощи оператора '=' сможешь только в какой-либо функции. 

Верно. А инициализировать структуру в месте ее объявления (как в моем примере) можно через оператор = в любом месте.

Добавлено через 59 секунд
Всмысле, не то что бы совсем в любом, но в глобальной области видимости тоже.... =)


--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
Alca
Дата 14.8.2008, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 7
Всего: 50



Спасибо. smile 


--------------------
PM WWW ICQ Skype Jabber   Вверх
bsa
Дата 14.8.2008, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Alca, я бы сделал так:
Код
struct MyStruct{
    std::string sVar1; 
    std::string sVar2; 
    MyStruct(const std::string &v1, const std::string &v2) : sVar1(v1), sVar2(v2) {}
};
Тогда в любом месте программы (кроме объявлений структур/классов) можно написать:
Код
MyStruct g_stMystruct("раз", "два");
Что приведет к нужному тебе результату.
Кстати, делать typedef для структур/классов в C++ необязательно. Делать новый тип:
Код
typedef MyStruct* MyStructPtr;
вредно, так как невозможно сделать указатель на константный объект:
Код
const MyStructPtr p_var;
Это будет константный указатель на неконстантный объект (кстати, в данном виде даже не скомпилируется, так как нужно проинициализировать). К тому же, такой новый тип даже не экономит время на "набивку" программы.
PM   Вверх
Alca
Дата 15.8.2008, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 7
Всего: 50



bsa, спасибо за совет чувак!!!  smile  smile  smile 

Это сообщение отредактировал(а) Alca - 15.8.2008, 09:14


--------------------
PM WWW ICQ Skype Jabber   Вверх
bsa
Дата 17.8.2008, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(Alca @ 15.8.2008,  09:13)
bsa, спасибо за совет чувак!!!  smile  smile  smile

Обычно, на этом форуме благодарят путем поднятия репутации.
Кстати, есть одна из версий происхождения слова "чувак" (в переводе с тюркских языков "кастрированный кабан"), которая мне не очень нравится, особенно, когда это слово относится ко мне. Поэтому, попрошу в предь воздержаться от его применения по отношению ко мне.

PM   Вверх
SABROG
Дата 17.8.2008, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


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

Репутация: 4
Всего: 91



Взято из википедии:

Цитата

Чувак — «юноша, мужчина», дружеское обращение к человеку мужского пола, (к лицам женского пола см. Чувиха), популярное в молодёжной среде. По , вторым значением слова по словарю Ожегова и раннему словарю Даля было определение «кастрированный кабан». (В словаре Ожегова никогда не было слова чувак, так же как не существовало "раннего" словаря Даля. Кастрированного кабана или барана придумали специально для развода хиппарей на пушкинской у кафе лира, потому что они по другому не обращались ни к кому, а с этой присказкой было удобно их разводить.)


Может быть не все так плохо smile



--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
bsa
Дата 17.8.2008, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(SABROG @ 17.8.2008,  16:41)
Может быть не все так плохо smile

Я не только на этот источник опирался. Имхо, слово просто с "душком".  smile 

Это сообщение отредактировал(а) bsa - 17.8.2008, 20:56
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.1180 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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