информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Портрет посетителяСтрашный баг в WindowsСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] А попробуй так 31.07.02 21:43  Число просмотров: 1466
Автор: + <Mikhail> Статус: Elderman
<"чистая" ссылка>
Ege, Voobcheto on eto i pisal iznachalno, tolko
operator = ni kogda ne budet vyzyvatsia, potomuchto proishodit initialization of class A t.k etot class ne imeet ctor i est` 2 public members kotorye i inicializiruutsia v dannom sluchae.
> > Есть класс (структура) скажем
> >
> > class Ca
> > {
> > public:
> >	int i1;
> >	int i2;
> > protected:
> >	int i3; // = i1+i2
> > };
> > 

---
> > Хочется писать
> >
> > Ca a = {1, 2};
> > 

---
> > И чтоб при этом автоматически посчиталось i3.
> > Возможно ли в с++ конструктор какой-то объявить для
> этих
> > целей или оператор?
>
> Попробуй так, может заработает (сам проверить не могу,
> что-то со средой не в порядке).
>
> Идея в том чтобы перегрузить оператор = для массива из двух
> константных интов:
>
> class A
> {
> public:
> int i1;
> int i2;
> int i3; // i1 + i2
> void print() { printf("\n%d %d %d\n", i1, i2, i3); };
> operator = (const int[2] x) { i1=x[0]; i2=x[1]; i3=i1+i2;
> };
> };
>
> void main()
> {
> A a = {1,2};
> a.print();
> }
>
> По сути что происходит?
> Ты объявляешь переменную а типа А и инициализируешь ее.
> Тоже самое что int a = 10; только тип данных другой.
> Если бы справа стоял операнд типа класса А, то ты бы смог
> выполнить присвоение без проблем. Поэтому тебе нужно
> определить оператор = для объекта другого типа, а именно
> массив из двух константных интов.
>
> Попробуй может заработает, если нет попробуй какие-нибудь
> вариации на эту же тему...
>
> Хотя если быть более точным, то в твоем случае ты создаешь
> новую переменную А а и сразу же инициализируешь ее. Поэтому
> лучше тебе создать конструктор для массива из двух
> константных интов.
<programming> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach