【发布时间】:2014-10-23 21:47:48
【问题描述】:
我最近尝试在模块中设计部分代码。我的问题是如何命名并保留它,以便班级的名称/地址既容易又告诉所有有关班级目的的知识。第一个想法是创建名为 Foo 的接口(抽象类),然后在命名空间 Foo 创建类,这样我就有如下代码:
Foo* foo = Foo::Bar();
但是我们不能同时创建同名的命名空间和类。所以另一种方法是将接口作为封闭类并将指定的类(它们的声明)放入其中,然后再定义这些指定的类:
class A {
public:
void foo() = 0;
class B;
class C;
};
class B : public A {
//
};
class C : public A {
//
};
我想知道这种类和接口的设计是否是好的做法?或者我应该使用其他东西/不要介意基类的错误命名?
Big pro 是命名。如果 - 例如 - 我将它用作异常系统 - 我可以编写如下代码:
Exception* exception = new Exception::IllegalArgument();
代替:
Exception::Interface* exception = new Exception::IllegalArgument();
但我也注意到了一个很大的骗局。我可以这样写:
Exception::IllegalArgument::Exception::IllegalArgument::Exce... exception;
那么,您对此有何看法?类型的无限循环是否可以且不介意,或者我应该考虑不同的策略?
【问题讨论】:
标签: c++ class oop inheritance nested