【发布时间】:2013-03-29 17:56:17
【问题描述】:
我有一个继承层次结构,我想让这个层次结构中的每个类都有一组属性,这些属性是该类特有的,并且在程序运行期间不会改变。例如:
class Base
{
public:
const std::string getName() const;
bool getAttribute1() const;
int getAttribute2() const;
};
现在我希望这些函数始终返回相同的结果。此外,当另一个类继承Base 时,这个类应该有自己的一组属性,并且这个派生类的任何实例都应该有相同的属性。此外,每个类的名称应该是唯一的。
我想知道一种方法,让它尽可能透明和优雅。到目前为止,我已经考虑了两个可以使用的想法:
- 制作一些锁系统。
即为这些属性提供设置器,但在多次调用它们时使它们抛出运行时异常。
- 让 getter 成为纯虚拟的。
在这种情况下,函数的结果不会存储在对象本身中。这会模糊地表明结果取决于动态类型。
这两个想法听起来都非常糟糕,所以我需要你的帮助。
我是 C++ 新手,但我知道有很多习语和模式可以解决像这样的一般问题。你知道吗?
【问题讨论】:
-
你需要更好地思考你想要做什么(当然要提到它是什么)。纯虚拟到底有什么问题?为什么听起来很糟糕?
-
我正在尝试建立遗传算法的层次结构。它们有很多共同点,因此我将它们表示为对象,并且每个算法都应该有一个唯一的名称。虚函数的问题在于,它们总是返回与例如const 静态成员。
标签: c++ design-patterns