gpt4 book ai didi

c++ - 为已知类型扩展 wxAny [wxWidgets]

转载 作者:行者123 更新时间:2023-11-28 05:09:06 26 4
gpt4 key购买 nike

当已知 wxAny 仅包含其中一种类型时,是否可以在应用程序中为一组有限的类型扩展 wxAny 的功能?

具体来说,我想使用 wxAny 来保存 int 之一, float , double , wxStringwxDateTime .只用 double 表示数字可能没问题并在别处进行转换。

我需要实现的唯一功能是 operator< , operator==operator>将两个参数都作为 wxAny 进行排序,并查找最大/最小值。

显而易见的是子类化wxAnywxSome并使用 wxAny::CheckType为不同的类型分支不同的比较方法。我犹豫这样做的原因是因为 wxAny 方法不是虚拟的,这让我认为 wxAny 不打算被子类化。

这与对 wxFreeChart 库的一些更新有关,因此我希望只具有与标准 wxWidgets 库相同级别的依赖性。

最佳答案

让我们倒着读这个问题。

wxAny 方法不是 virtual ,这让我认为 wxAny 不打算被子类化”。的确。 C++ 不是纯粹的 OO 语言,事实上 OO 甚至不是默认语言。 virtual是 Liskov 可替换性的重要组成部分,但方法只有 virtual如果您明确制作它们。

“显而易见的事情是对 wxAny 进行子类化”。这在没有自由函数的纯 OO 语言中是显而易见的。在纯 OO 语言中,每个函数都属于一个类。并且由于您无法向 wxAny 添加函数,您将它们添加到子类。但如前所述,C++ 不仅仅是 OO,它还具有自由函数。 bool compare(wxAny,wxAny)是有效的函数声明。

也就是说,I would like to hold one of ...建议您使用 wxAny作为实现细节。也许你应该有一个包装类,它有一个 wxAny 成员。在这种情况下,您会将比较器命名为 bool Wrapper::operator<(Wrapper rhs) const .

关于c++ - 为已知类型扩展 wxAny [wxWidgets],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43888724/

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