管理高度相关的类(类内部类)的良好实践

时间:2018-05-08 19:37:51

标签: c++ class namespaces

一切都很简单。

我创建了几个课程。为了使维护更容易,我为每个类定义了一个名为Parameters的结构。此参数定期更改。这很方便。我可以使用A :: Parameters或B :: Parameters创建参数,可以传递它们,返回它们等等......参数确实属于特定的类,但有时我也需要它们在外面的某个地方。

class A{
public:
struct Parameters{
    int a;
}
private:
Parameters para;
}

class B{
public:
struct Parameters{
    double b;
}
private:
Parameters para;
}

随着时间的推移,我的Parameters变得越来越复杂。我甚至开始在那里添加一些简单的函数,并且在一些更复杂的函数之后不久。现在他们不再真正感觉像是一个结构了,他们本身更像是一个自己的阶级。我知道类和结构之间的差异在C ++中是非常小的,但我主要使用结构用于原始数据存储,而类用于其他所有内容。 所以我决定把它们改成类:

class A{
public:
class Parameters{
    int a;
}
private:
Parameters para;
}

class B{
public:
class Parameters{
    double b;
}
private:
Parameters para;
}

一切都很好,除了它对我来说真的有点尴尬。我有时在类中定义类,但主要是作为私有类,大多数时候它是一个非常小而容易的类,没有很多代码。在这种情况下,源代码变得非常混乱。我想现在有一个自己的文件用于这些参数类。

现在我看到了几种可能性,我无法确定哪一种是最好的:

  • 我应该创建一个新文件Parameters.cpp / Parameters.h并将每个Parameters类存储在相应的命名空间中,如:

    namespace A{ class Parameters{ int a; } }

    namespace B{ class Parameters{ double b; } }

这是否等同于定义班级Parameters / A中的班级B

  • 我应该为每个类创建一个自己的文件,并将该类放在命名空间AB中吗? (我希望避免将Parameter课程的名称更改为A_ParametersB_Parameters等等......)

  • 或者在某种程度上可能只在A中声明类 class A{ public: class Parameters; } 并将类定义放在其他位置(在不同的文件中)。请注意,我在班级Parameters中创建了A的实例。

我想主要的问题是什么是好的做法/你会做什么?每个文件一个类,一个文件中有多个名称空间,重命名类......

0 个答案:

没有答案
相关问题