在这种情况下我应该使用嵌套类吗?

JimDaniel 47 c++ oop class nested-class

我正在研究用于视频播放和录制的类集合.我有这就像公共接口,用类似的方法一个主类play(),stop(),pause(),record()等...然后,我有主力类里面做视频解码和视频编码.

我刚刚了解了C++中嵌套类的存在,我很想知道程序员对使用它们的想法.我有点小心,并不确定它的好处/缺点是什么,但它们似乎(根据我正在阅读的书)用于我的案例.

本书建议在像我这样的场景中,一个好的解决方案是将主要类嵌套在接口类中,因此客户端不打算使用的类没有单独的文件,并避免任何可能的命名冲突?我不知道这些理由.嵌套类对我来说是一个新概念.只是想看看程序员对这个问题的看法.

saint_groceo.. 26

我有点不愿意在这里使用嵌套类.如果您为"多媒体驱动程序"创建了一个抽象基类来处理后端内容(主力),以及为前端工作创建一个单独的类,该怎么办?前端类可以获取指向已实现的驱动程序类的指针/引用(针对适当的媒体类型和情况),并对主力结构执行抽象操作.

我的理念是继续以优雅的方式使客户接触到这两种结构,只是假设它们将被串联使用.

我会在Qt中引用像QTextDocument这样的东西.您提供了裸机数据处理的直接接口,但将权限传递给像QTextEdit这样的对象来进行操作.


Frederik Sli.. 9

您将使用嵌套类来创建实现主类所需的(小)辅助类.或者,例如,定义接口(具有抽象方法的类).

在这种情况下,嵌套类的主要缺点是这使得重用它们变得更加困难.也许你想在另一个项目中使用你的VideoDecoder类.如果你把它作为一个嵌套的VideoPlayer类,你就不能以优雅的方式做到这一点.

相反,将其他类放在单独的.h/.cpp文件中,然后可以在VideoPlayer类中使用这些文件.VideoPlayer的客户端现在只需要包含声明VideoPlayer的文件,但仍然不需要知道如何实现它.


graham.reeds.. 5

决定是否使用嵌套类的一种方法是考虑这个类是否扮演支持角色或者它自己的角色.

如果它仅仅是为了帮助另一个类而存在,那么我通常将它作为一个嵌套类.对此有一大堆警告,其中一些似乎是矛盾的,但这一切都归结为经验和直觉.