Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[C++] А попробуй так 31.07.02 19:50 Число просмотров: 1370
Автор: vim Статус: Незарегистрированный пользователь
|
> Есть класс (структура) скажем > > 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; только тип данных другой.
Если бы справа стоял операнд типа класса А, то ты бы смог выполнить присвоение без проблем. Поэтому тебе нужно определить оператор = для объекта другого типа, а именно массив из двух константных интов.
Попробуй может заработает, если нет попробуй какие-нибудь вариации на эту же тему...
Хотя если быть более точным, то в твоем случае ты создаешь новую переменную А а и сразу же инициализируешь ее. Поэтому лучше тебе создать конструктор для массива из двух константных интов.
|
|
|