一切都很简单。
我创建了几个课程。为了使维护更容易,我为每个类定义了一个名为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
?
我应该为每个类创建一个自己的文件,并将该类放在命名空间A
或B
中吗?
(我希望避免将Parameter
课程的名称更改为A_Parameters
,B_Parameters
等等......)
或者在某种程度上可能只在A中声明类
class A{ public: class Parameters; }
并将类定义放在其他位置(在不同的文件中)。请注意,我在班级Parameters
中创建了A
的实例。
我想主要的问题是什么是好的做法/你会做什么?每个文件一个类,一个文件中有多个名称空间,重命名类......