Я думаю о создании библиотеки Linq в C ++, чтобы делать такие вещи, как theVector.select( ... )
, theVector.where(...)
,
Мне интересно, есть ли способ расширить класс C ++, который уже был объявлен (например, std::vector
) Я хотел бы иметь возможность сделать:
theVector.select(...)
вместо
myClass( theVector ).select(...)
Есть ли способ это сделать? как в C # ?
Спасибо,
Сообщество C ++, похоже, движется к функциям, не являющимся членами для этого типа «полезности, не имеющей прямого отношения к классу под рукой». например если у тебя есть std::vector v;
ты всегда мог v.begin()
, но теперь вы также можете std::begin(v)
, Это будет означать что-то вроде select(theVector)...
,
Но, возможно, вы захотите поддержать объединения в какой-то момент, поэтому я бы
select(...).from(theVector).join(theMap, ...).where(...)
// or
select(...).from(theVector).order_by(...)
// etc.