繁体   English   中英

C ++新秀:如何在帮助程序/辅助文件中存储类的代码,但仍可以访问所有类成员函数?

[英]C++ rookie: how can I store code for a class in helper/auxiliary files, but still access all class member functions?

我编写了一个类,该类从外部文件中读取数据,处理数据,然后进行计算。

该类非常长,尤其是构造函数。 在这里,我从外部文件中读取数据并进行操作以准备计算。 我使用模板函数来做到这一点。

我知道将类拆分为更好的样式,但是我将其与无法更改的商业代码结合使用。 另外,需要使用代码的人需要将其作为一类+辅助文件,因此我仅限于这一类。 为了使代码更具可读性,我想将构造函数中的一些代码存储在名为“ auxiliary.h / .cpp”的帮助器.cpp / .h文件中,并通过函数进行访问。

这是问题所在:

1)将模板函数(类的成员函数)作为函数参数传递给辅助文件。 我无法做到这一点,尽管我听说有可能通过“消除歧义”来实现。 传递非模板函数和向量以及类似的东西是没有问题的。模板函数就是问题。

2)同样,即使我可以将模板函数作为参数传递给访问辅助文件的函数,我的参数列表最终也会很长。

我想知道的是,有什么方法可以使辅助文件“看到”该类吗? 我尝试将类的实例作为参数/参数传递给在辅助文件中填充的每个函数。 但这会导致“ instanceName未在此范围内声明”,并且看起来确实是一种循环/复杂的方法。

任何建议将不胜感激。 谢谢。

我知道将类拆分为更好的样式,但是我将其与无法更改的商业代码结合使用...

对于您的具体情况,我可能会缺少更多的背景知识,但是无论您使用的是什么第三方代码,您都应该能够对自己编写的代码做任何想做的事情,听起来好像写了很多东西。

您认识到您的课程太大了,因此下一步是将其分解为独立的,更具凝聚力的课程。 尝试创建其他文件/函数来简单地修改已经很大的一个类的内部状态,将使代码变得更大,并且比起现在,您将更多地意粉。

如果第三方库需要使用您编写的单个类进行操作,请查看Facade设计模式。 您可以轻松地将“看起来”复杂的类放到外部,但是在内部它仅将工作委派给任何数量更多的专门类。

如果您希望一个类可以访问第三方库,也可以这样做。 看一下诸如Adapter设计模式之类的东西。

我可以提供的另一条建议是拿起有关重构的书 它将向您展示如何处理看起来过于复杂的任何代码,并有条不紊地应用步骤以使其更具可读性和可维护性。 例如,看一下您的数据成员,它们中的任何一个看起来像它们属于一个组(即,它们经常一起访问/修改)吗? 如果是,请考虑将它们移入自己的类,该类提供了最小的接口,用于仅获取/设置主类所需的内容。

这篇文章并没有回答您的特定问题,而是退后一步,也许有比打破OO规则和良好的设计原则更好的解决方案,只是因为某些约束可能并没有真正存在。

您可能可以制作一个模板帮助程序类而不是帮助程序函数,将指针传递给您的第一个(最重要的)类?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM