C++ C++;内置封闭类-这是一种好的做法吗?

C++ C++;内置封闭类-这是一种好的做法吗?,c++,class,oop,inheritance,nested,C++,Class,Oop,Inheritance,Nested,我最近尝试在模块中设计部分代码。我的问题是如何命名和保存它,这样类的名称/地址既简单又能告诉所有关于类用途的信息。第一个想法是创建名为Foo的接口(抽象类),然后在名称空间Foo中创建类,这样我的代码如下: Foo* foo = Foo::Bar(); 但是我们不能用相同的名称创建名称空间和类。所以另一种方法是将接口作为封闭类,并将指定类(它们的声明)放入其中,然后定义这些指定类: class A { public: void foo() = 0; c

我最近尝试在模块中设计部分代码。我的问题是如何命名和保存它,这样类的名称/地址既简单又能告诉所有关于类用途的信息。第一个想法是创建名为Foo的接口(抽象类),然后在名称空间Foo中创建类,这样我的代码如下:

Foo* foo = Foo::Bar();
但是我们不能用相同的名称创建名称空间和类。所以另一种方法是将接口作为封闭类,并将指定类(它们的声明)放入其中,然后定义这些指定类:

class A {
    public:
        void foo() = 0;

        class B;
        class C;
};

class B : public A {
    //
};

class C : public A {
    //
};
我想知道这种类和接口的设计是否是一种好的实践?或者我应该使用其他东西/更不用说基类的糟糕命名了

Bigpro正在命名。例如,如果我将其用作异常系统,我可以编写如下代码:

Exception* exception = new Exception::IllegalArgument();
而不是:

Exception::Interface* exception = new Exception::IllegalArgument();
但我也注意到了一个大问题。我可以这样写:

Exception::IllegalArgument::Exception::IllegalArgument::Exce... exception;

那么,你怎么看?你认为类型的无休止循环可以吗?还是我应该考虑不同的策略?

这是无关紧要的实践

我的意思是,它既不能给你买那么多,也没有真正的缺点

不过,规范只是将它们放在同一个名称空间中,然后使用它来完成


它“看起来更干净”,如果你改变层次结构,你至少有机会在没有太多流血的情况下完成它。

好的,除了创建一个名称空间并将所有相关内容都放在其中之外,你能为类似的事情推荐其他设计模式吗(一个基类和许多派生类?甚至一些层次结构)?