【发布时间】:2009-04-22 00:55:00
【问题描述】:
考虑下面的数组算法:
class MyType;
{
// some stuff
}
class MySubType:MyType
{
// some stuff
}
void foo(MyType** arr, int len)
{
for (int i = 0;i<len;i++)
// do something on arr[i]->
}
void bar()
{
MySubType* arr[10];
// initialize all MySubType*'s in arr
foo(&arr, 10);
}
这里没有什么花哨的。我的问题是 - 我如何使用模板来做到这一点?
void foo(std::vector<MyType>& s)
{
std::vector<MyType>::iterator i;
for (i = s.begin(); i != s.end(); i++)
// do stuff on *i
}
所以,在酒吧里,我不能这样做:
void bar()
{
std::vector<MySubType> s;
foo(s); // compiler error
}
错误:std::vector<MyType, std::allocator<MyType> >& 类型的引用从 std::vector<MySubType, std::allocator<MySubType> > 类型的表达式的无效初始化
有没有办法做这样的事情?
基本上,如果有办法做到这一点:
std::vector<MySubType> s;
std::vector<MyType>& t = s;
我会很高兴...
【问题讨论】:
标签: c++ generics stl templates