我对以下程序有一点问题
internal IEnumerable<T> GetItems<T>(string NodeName) where T : Root, new()
{
var node = new T();
return GetItems(NodeName, node).Cast<T>();
}
public IEnumerable<Root> GetItems(string NodeName, Root root)
{
// do it
}
我想知道如何将其更改为C ++代码。这就是我试过的
template<class T>
list<T> GetItems(string NodeName)
{
auto node = new T();
return GetItems(NodeName, node);
}
list<Root> GetItems(string NodeName, Root root)
{
// do it
}
现在我想把它搞得一团糟
typedef shared_ptr<Root> ROOT_PTR;
class SmallRoot:public Root{};
list<ROOT_PTR> GetItems(string NodeName, ROOT_PTR rootPtr)
{
//do something and return a list of share pointers
}
然后我被困在如何重新设计模板GetItems
以提供SmallRoot
类