我正在为shapes实现一些类。有没有办法避免代码重复,同时又浪费内存?
基本上,我希望基类中的变量是一个常量,并且每个派生类(如静态成员)只有一个副本,但每个派生类具有不同的值。
例如,我想定义作用于派生类的惯性张量的函数;对于每个形状,惯性张量是一个常量,所以我不希望每个实例都有一个相同常量的副本。
然而,不是声明相同的变量并为每个派生类定义相同的函数,我想在基类中声明一个变量,并在基类中也有一个泛型函数,比如将惯性张量从世界坐标更改为局部坐标,反之亦然。
有没有办法做到这一点?
发布于 2011-11-08 17:50:03
在基类中使用纯虚函数,并在每个派生类中重写它以返回适当的值。这样,您只有一个常量副本,并且每个派生类都正确地定义了它。
class Base
{
public:
virtual int get_constant0() const = 0;
};
class Derived0 : public Base
{
public:
virtual int get_constant0() const { return 5; }
};
class Derived1 : public Base
{
public:
virtual int get_constant0() const { return 42; }
};
发布于 2011-11-08 18:09:01
与您的要求无关,但与我认为您正在尝试实现的目标相关;我将开始查看现有的实现,看看其他库如何实现刚体类型之间的集成,如果只是为了了解而不是要做什么。
https://stackoverflow.com/questions/8054793
复制相似问题