我正在考虑在C ++中创建一个Linq库来执行theVector.select( ... )
,theVector.where(...)
之类的操作。
我想知道是否有一种方法可以扩展已经声明的C ++类(例如std::vector
),我想这样做:
theVector.select(...)
代替
myClass( theVector ).select(...)
无论如何,有什么方法可以完成like in 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.