C++:对 child 隐藏方法

标签 c++ oop inheritance polymorphism information-hiding

我有一个名为 transform 的类,及其子类 translationrotationscaling,它们应该对三角形应用变换。

每个子类都会重写 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/

相关文章:

C++ - 简单二进制到 ASCII 二进制程序

oop - Object.Do something() 或 Do something With(Object)

java - 我在这个接口(interface)和方法中使用 Java 泛型做错了什么?

c++ - 返回字符串中的第一个非重复字符

c++ - 这两行代码有什么区别

php - 在 PHP 中 $this-> 之后使用美元符号是什么意思?

c# - 在 block 外创建一个对象的范围

javascript - 为什么重置原型(prototype)不会从对象中删除属性?

c++ - 如果仅部分重载重载函数,多态性将不起作用

c++ - QWebEngineView - 从资源加载 html