Re: Как избавиться от лишних аргументов
От: Centaur Россия  
Дата: 25.09.12 05:00
Оценка:
Здравствуйте, PlusMyTwitterFace, Вы писали:

PMT>Можно ли каким-то образом "избавиться" от "лишних" аргументов функции?


PMT>Например, есть у меня, допустим, функция со следующим объявлением:


PMT>void foo(std::size_t* _1, float* _2, double* _3, int* _4);

PMT>При её вызове в некоторых местах мне не нужно передавать ей _1, _2 и _3 для заполнения, лишь _4. Однако из-за того, что в качестве параметров используются указатели, мне всё равно приходится создавать дополнительные переменные:

Как-то так:
template<typename T>
class _
{
public:
    operator T*() const { return v_; }
private:
    T v_;
};
…
int four;
foo(_<size_t>(), _<float>(), _<double>(), &four);

Интересно было бы добиться синтаксиса foo(_, _, _, &four) для любого типа (с использованием шаблонного operator T*?) и при этом сохранить автоматическую деструкцию ненужного объекта.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.