我有一个名为 transform
的类,及其子类 translation
、rotation
和 scaling
,它们应该对三角形应用变换。
每个子类都会重写 apply_transform()
方法:
class transform
{
protected:
virtual triangle apply_transform(const triangle&) const = 0;
public:
static triangle apply_transforms(const triangle&, const std::initializer_list<const transform*>&);
};
class scaling : public transform
{
...
public:
triangle apply_transform(const triangle&) const override;
};
//same for rotation and translation
我还有一个名为apply_transforms
的函数,外界应该可以访问它,我用它来应用多个转换。我将 transform*
列表传递给它以启用多态性。
我唯一的问题是现在子类也知道这个方法。这让我很困扰,因为子类不应该能够应用所有其他转换。
是否有一个优雅的解决方案?
最佳答案
使 apply_transforms
成为一个非成员函数,它不包含在实现 transform
的类所需的头文件中。
关于C++:对 child 隐藏方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44289457/