【发布时间】:2011-01-30 16:17:29
【问题描述】:
当我有一个具有特定类型参数的模板时,是否允许函数返回相同模板但具有不同类型的对象?换句话说,是否允许以下行为?
template<class edgeDecor, class vertexDecor, bool dir>
Graph<edgeDecor,int,dir> Graph<edgeDecor,vertexDecor,dir>::Dijkstra(vertex s, bool
print = false) const
{
/* Construct new Graph with apropriate decorators */
Graph<edgeDecor,int,dir> span = new Graph<edgeDecor,int,dir>();
/* ... */
return span;
};
如果不允许这样做,我怎样才能完成同样的事情?
【问题讨论】:
-
为什么?如果您要强制其他所有内容都成为
int,为什么不放弃中间模板参数并完成它? -
@potatoswatter:它编译得很好,我还没有达到可以运行整个程序的地步。 @gman:只有这个函数我希望它是
int,在Graph的其余部分中它可能是其他任何东西。还是我误会了你?