параметры ф-ции и operator,()
От: Аноним  
Дата: 07.10.04 08:18
Оценка:
Всем привет

Вот набросок:
class A
{
AArray& operator,(){ return *this; };
}

func(AArray&);

A a,b,c;
func(a,b,c);

Но так работать не будет.

Можно конечно вот так:
func((a,b,c));
но некрасиво как-то.

Так вот, вопрос соответственно такой:
можно ли сделать как-нить так, что-бы работала именно func(a,b,c);
Re: параметры ф-ции и operator,()
От: Анатолий Широков СССР  
Дата: 07.10.04 08:23
Оценка:
А>Можно конечно вот так:
А>func((a,b,c));
А>но некрасиво как-то.

Да, вроде, ничего.

А>Так вот, вопрос соответственно такой:

А>можно ли сделать как-нить так, что-бы работала именно func(a,b,c);

Да, можно, перегрузив func для различного числа аргументов.
Re: параметры ф-ции и operator,()
От: Carc Россия http://www.amlpages.com/home.php
Дата: 07.10.04 08:25
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Всем привет


А>Вот набросок:

А>class A
А>{
А> AArray& operator,(){ return *this; };
А>}

А>func(AArray&);


А>A a,b,c;

А>func(a,b,c);

А>Но так работать не будет.


А>Можно конечно вот так:

А>func((a,b,c));
А>но некрасиво как-то.

А>Так вот, вопрос соответственно такой:

А>можно ли сделать как-нить так, что-бы работала именно func(a,b,c);
что-то, то ли я, то ли лыжи?
что это ?
не проще ли так
struct AArray {
AArray (const A& a1,const A& a2,const A& a3) {
}
};
и шоб imlicit конструктор
и потом у тебя в вызове неименнованный аргумент, как он может быть ссылкой? и главное зачем?
Aml Pages Home
Re: параметры ф-ции и operator,()
От: Bell Россия  
Дата: 07.10.04 08:31
Оценка: 1 (1)
Здравствуйте, Аноним, Вы писали:

А>Так вот, вопрос соответственно такой:

А>можно ли сделать как-нить так, что-бы работала именно func(a,b,c);

5.18/2
In contexts where comma is given a special meaning, 
[Example: in lists of arguments to functions (5.2.2)
and lists of initializers (8.5) ] the comma operator 
as described in clause 5 can appear only in parentheses.
[Example:
f(a, (t=3, t+2), c);
has three arguments, the second of which has the value 5. ]


Вывод очевиден.
Любите книгу — источник знаний (с) М.Горький
Re: параметры ф-ции и operator,()
От: jazzer Россия Skype: enerjazzer
Дата: 07.10.04 08:38
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Можно конечно вот так:

А>func((a,b,c));
А>но некрасиво как-то.

А>Так вот, вопрос соответственно такой:

А>можно ли сделать как-нить так, что-бы работала именно func(a,b,c);

по грамматике в синтаксисе вызова функции нет места оператору запятая, только внутри выражения в скобках
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: параметры ф-ции и operator,()
От: MaximE Великобритания  
Дата: 07.10.04 09:21
Оценка: 1 (1)
> Всем привет
>
> Вот набросок:
> class A
> {
>      AArray& operator,(){ return *this; };
> }


Не забываем, что operator,() — бинарный оператор, т.е. будучи определен как член класса, он должен явно принимать один параметр, вне класса — два.

--
Maxim Yegorushkin
Posted via RSDN NNTP Server 1.9 gamma
Re: параметры ф-ции и operator,()
От: Аноним  
Дата: 07.10.04 09:57
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Всем привет


Вообще господин Мейерс не рекомендует перегружать оператор запятая.
Re[2]: параметры ф-ции и operator,()
От: Esperar  
Дата: 07.10.04 10:00
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Аноним, Вы писали:


А>>Всем привет


А>Вообще господин Мейерс не рекомендует перегружать оператор запятая.

а чем он аргументирует? если не секрет
Re[3]: параметры ф-ции и operator,()
От: bkat  
Дата: 07.10.04 10:11
Оценка:
Здравствуйте, Esperar, Вы писали:

E>Здравствуйте, Аноним, Вы писали:


А>>Здравствуйте, Аноним, Вы писали:


А>>>Всем привет


А>>Вообще господин Мейерс не рекомендует перегружать оператор запятая.

E>а чем он аргументирует? если не секрет

Не знаю чем он аргументирует,
но то что читать и понимать такой код будет сложнее — это очевидно.
Предположим автору топика получится сделать то, что он хочет.
И какая от этого радость?
Представь, ты видишь
 func(a,b,c);

но на самом деле это означает не вызов функции, принимающей три параметра,
а вызов функции с одним параметром.
Твоя реакция на такой код?

Вариант
 func((a,b,c));

конечно же понятнее, но тоже глаза режет...
Re[4]: параметры ф-ции и operator,()
От: Carc Россия http://www.amlpages.com/home.php
Дата: 07.10.04 10:18
Оценка:
А чем неявный конструктор то не катит? и удобно и код ясный!?!
Aml Pages Home
Re[5]: параметры ф-ции и operator,()
От: Анатолий Широков СССР  
Дата: 07.10.04 11:34
Оценка:
Здравствуйте, Carc, Вы писали:

C>А чем неявный конструктор то не катит? и удобно и код ясный!?!


А приведите пример. Только, прежде чем публиковать попробуйте его скомпилировать.
Re[3]: параметры ф-ции и operator,()
От: Bell Россия  
Дата: 07.10.04 11:43
Оценка: 4 (1) +1
Здравствуйте, Esperar, Вы писали:

E>а чем он аргументирует? если не секрет

Аргументирует он вот чем:
В стандартном операторе порядок вычисления операндов строго определен — слева направо. Это его свойство используется весьма и весьма широко.
Если же этот оператор перегрузить например так:
class A
{
A& operator +(int;)
A& operator =(int;)

public:
};
A& operator,(A& a1, A& a2){ return a2; }


то возможны очень интересные варианты поведения, поскольку в данном случае порядок вычисления операндов не определен:
A a1;
a1 = 1, a1 + 3 ;
Любите книгу — источник знаний (с) М.Горький
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.