【发布时间】:2013-07-15 07:46:03
【问题描述】:
我正在尝试在 C++ 中创建一个函数,我想知道我是否可以创建它以便它能够返回不同类型的向量。例如,根据不同的大小写,它返回向量字符串、int、double 或...任何东西。 在 C++ 中可以吗? (我不想使用具有不同 arg(S) 和不同返回值的重载函数) 我对 C++ 很陌生,我的问题似乎很愚蠢。
这是我的一段代码:
//这里的零表示交集
std::vector<??????> findZeros(const mesh::Region& s, char *model) const
{
//Point
if( model == "point" )
{
std::vector<Vertex> zeros;
for(Region::pointIterator it = s.beginPoint(); itv != s.endPoint(); ++itv )
{
if( abs(Val(*it)) < 1.e-12 )
zeros.push_back(*it);
}
std::vector<point> zerosP(zeros.begin(), zeros.end());
return zerosP;
}
//line
else if (EntityS == "line")
{
std::vector<line> zerosE;
std::vector<Point&> PointE;
for(Region::lineIterator ite = s.beginLine(); ite != s.endLine(); ++ite )
{
Line ed = *ite;
Point P0 = ed.point(0);
Point P1 = e.point(1);
if( ......... ) zerosE.push_back(ed);
else if ( ....... )
{
PontE.push_back( P0, P1);
zerosE.push_back(ed);
}
}
//这里我想返回“点”或“带有点的线”或在我们的表面上层。 //我想在一个功能中完成所有事情! }
【问题讨论】:
-
模板 [....]
-
是的,模板函数是你的朋友。这是一个快速指南:cplusplus.com/doc/tutorial/templates
-
你到底需要做什么?
-
@LuchianGrigore & Mert 好吧,当然,前提是要在编译时决定。
-
永远不要将 C 字符串与
==进行比较。使用strncmp,或者更简单的std::string。
标签: c++