2016-04-05 60 views
-1

我在返回一个字符串向量的类中有一个方法。够简单。但是有时候我想让整个字符串回来,没有解析?但使用相同的方法。返回不同类型的C++类方法

由于获取数据的方法非常复杂,我目前使用该方法返回原始字符串,然后将其解析为主要向量,如果必须的话。或者如果想要以不同的返回类型复制该方法。

有没有一种更优雅的方式来做到这一点使用一种方法?

+0

这有点难看,但一些结构可以适应这两种类型?你在这里描述的听起来像是设计阶段的失败,所以我会继续努力,直到你完全避免这个问题。 – tadman

+0

@tadman工会不适用于构造函数,只能用于POD – sashoalm

+0

这里没有“优雅的解决方案”。您需要在其他地方测试函数的结果类型,即是字符串还是字符串的向量以便进一步处理 –

回答

1

对不起,在发布这个之后,我想出了如何去做。制作获取数据私有的复杂方法,设置两个调用它的公共方法,并返回不同的类型。关键在于保持从字符串集合到向量之外的转换。会隐藏在课堂上。

有时它有助于谈论问题。独自工作,无人可谈。

谢谢你们,不管你信不信,你甚至不知道它的帮助。 :)

+0

但是,这不是论坛。如果你只是想进行对话,即使是编程,这也是错误的地方。你应该尝试一下聊天室。 – sashoalm

1

通常不可能有两个函数具有相同的名称,只有返回类型不同。从狭义上讲,我看到以下主要可能性解决该限制:

  • 这种问题的一般解决方案是将参考引用作为函数的副作用进行更改。实际的返回值是一个简单的bool或整数,表示成功。在这里你可以传递一个初始空向量的引用;字符串是否被解析并且被分割或者不会被布尔返回值指示,并且解析的结果 - 如果它发生 - 将被放入参考矢量中。
  • 像以前一样返回一个向量;一个空的向量将表明没有解析发生。这个解决方案意味着调用者可以访问原始字符串,例如,因为获取字符串并解析它被分为两个函数。

从更广泛的意义上讲,这只是一个设计问题,就像您刚才检测到的那样。只有在检查结果表明有必要时,您才能获取,检查和分析数据,以便您知道要调用哪个函数以及在每个点上如何处理数据。分而治之,编程之道。

+0

可能有两个函数只有返回类型不同,编译器不能自动在它们之间进行选择。只需将一个实现定义为模板函数,并以返回类型为模板。然后使用不同的实现为其他返回类型定义专门化。 – joelw

+0

这是可怕的,**应该**永远不会完成。 – joelw

+0

@ joelw你是指我的一个建议吗?如果是这样,哪一个,为什么你觉得它很可怕? –