Çeşitli girdiler için aşırı yüklenen process
yöntemine sahip bir sınıfım var Filter
.Tüm aşırı yüklenmiş yöntemler için takma ad?
template< typename T >
class Filter
{
public:
void process(T arr[], size_t len);
T process(T one_value);
void process(std::array &arr);
void process(std::vector &v);
//... many other variants
using operator() = process; // How to write proper?
}
Ben process
ihmal kullanıcı kodu basitleştirmek istiyorum: filter.process(values)
filter(values)
haline gelecektir. Her varyant için aşırı yüklenmiş bir operator()
yazmanın iyi bir fikir olduğunu sanmıyorum. Daha uygun bir çözüm var mı?
:
Hemen şöyle yerine kurucular içine tüm bu aşırı yüklenmeleri olun. –
Herhangi bir tür denetimi atlamak yok, ya da hiçbir dönüşüm yoktur. 'process' argümanı' operator() ''e verildiği gibi alacaktır. – Niall
@DanKorn Bence, mevcut standartlara uyan C++ kodu ile C++ 'etiketine cevap vermek oldukça yaygın. Yani, ben 'C++ 'etiketi C++ 03 veya başka herhangi bir özel standart anlamına gelmez sanmıyorum. –