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

Поиск:

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


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Есть анонимная структура:

Код

struct
{
  Type1 field1;
  Type2 field2;

  ###() : field1(value1), field2(value2)
} variable1;


Внимание, вопрос: что писать вместо ### ? smile Решения дописывания имени структуры понятно, а если без? smile

Это сообщение отредактировал(а) JackYF - 14.11.2008, 18:13


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Sartorius
Дата 14.11.2008, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



__unnamed()

В VS 2005 по крайней мере катит

Это сообщение отредактировал(а) Sartorius - 14.11.2008, 18:07
PM MAIL ICQ   Вверх
Alek86
Дата 14.11.2008, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



попробуй откомпиль в comeau
Код
struct {};


в общем, скорее всего анонимные структуры в плюсах запрещены

Добавлено через 1 минуту и 24 секунды
хотя
Код
typedef struct {} T;

компилится....

Добавлено через 2 минуты и 55 секунд
Цитата(Sartorius @  14.11.2008,  18:05 Найти цитируемый пост)
__unnamed()

нету такого в стандарте


--------------------
user posted image    user posted image
PM MAIL   Вверх
JackYF
Дата 14.11.2008, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Цитата(Alek86 @  14.11.2008,  17:06 Найти цитируемый пост)
скорее всего анонимные структуры в плюсах запрещены

ы?

Исправляю первый пост. Ни разу не запрещены.

Добавлено через 36 секунд
Если указать переменные сразу после объявления smile


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Alek86
Дата 14.11.2008, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



JackYF, не знаю, что ты исправил, но без typedef ты анонимный класс не объявишь

по сабжу думаю, что никак smile
по крайней мере в стандарте "unnamed class" встречается 2 раза и про конструктор ничего там не сказано

Добавлено через 1 минуту и 28 секунд
Цитата(JackYF @  14.11.2008,  18:13 Найти цитируемый пост)
Если указать переменные сразу после объявления 

это C


--------------------
user posted image    user posted image
PM MAIL   Вверх
JackYF
Дата 14.11.2008, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Цитата(Alek86 @  14.11.2008,  17:16 Найти цитируемый пост)
это C 

это почему?


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Alek86
Дата 14.11.2008, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



7.1.3
Цитата
If the typedef declaration defines an unnamed class (or enum), the first typedef-name declared by the declaration
to be that class type (or enum type) is used to denote the class type (or enum type) for linkage purposes
only (3.5). [Example:
typedef struct { } *ps, S; // S is the class name for linkage purposes
—end example] [Note: if the typedef-name is used where a class-name (or enum-name) is required, the
program is ill-formed. For example,
typedef struct {
S(); //error: requires a return type because S is
// an ordinary member function, not a constructor
} S;
—end note]


насколько я понимаю, для линковочных нужд
дальше не углублялся

Добавлено через 3 минуты и 38 секунд
я ошипся - можно


--------------------
user posted image    user posted image
PM MAIL   Вверх
JackYF
Дата 14.11.2008, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Alek86, В моём коде typedef'a вообще-то нет.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
J0ker
Дата 14.11.2008, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



наскока я помню неименованные классы не могут содержать конструкторов, деструкторов и статик мемберов...
может проверю чуть позже


--------------------
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0478 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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