gpt4 book ai didi

C++:对 child 隐藏方法

转载 作者:搜寻专家 更新时间:2023-10-30 23:52:47 24 4
gpt4 key购买 nike

我有一个名为 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com