gpt4 book ai didi

c++ - 如何禁止隐式转换为基类?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:25:25 25 4
gpt4 key购买 nike

我想在我的代码中清楚地区分 3D 和 2D 点。显而易见的解决方案是拥有单独的类。

另一方面,从 z = 0 的 3D 点到 2D 点的转换非常普遍。因此我想使用一个公共(public)基类,这样我就可以在内存中就地进行这些转换。为了明确区分类型,我想禁止隐式转换为该基类。这可行吗?

或者是否有不同的方法来创建具有类似功能的不同类型?

最佳答案

您可以私下派生子类:

class PointBase {
// ...
};

class Point2D : private PointBase {
// ...
};

class Point3D : private PointBase {
// ...
};

这种方法的副作用是 PointBase 的任何公共(public)成员也无法从外部访问,因此子类必须通过为它们提供代理方法或使用关键字 using 指定它们。这就是为什么只有当 PointBase 中的公共(public)逻辑相当可观并且在一个地方实现它比提到的缺点带来更多好处时,我才会采用这种方式。

关于c++ - 如何禁止隐式转换为基类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15477006/

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