【发布时间】:2021-02-27 04:46:31
【问题描述】:
假设我有一个类 Grid,它包含 3 种不同类型的正方形,每种正方形具有不同的功能,所有这些都继承自父类 Square。我想创建一个这样的模板,其中 T1 是当前方块(我的角色所在的)的类型。它可以是 Grid 中的任何正方形,但只有在调用函数时才知道。
template <typename T1, typename T2> void Grid::move(T1 current_square, T2 new_square){...}
【问题讨论】:
-
为什么要创建模板?对你有什么好处?这感觉就像您对每种类型的正方形都有专门化的情况,或者您可以简单地使用
Square&参数。在任何一种情况下,模板都不是工作的正确工具。你能在保持抽象的同时更详细地说明这个函数的目的吗(没有太多的实现细节)? -
@JaMiT 我在这方面做了更多工作,确实,模板无济于事。本质上,我希望我的函数访问仅属于 3 个正方形中的 2 个的成员(因此它不在父类中)。如果我只使用
Square&,它会给我一个Square has no member named..error。我想我将只实现一个虚函数,它将从 2 个方格返回我想要的成员,并且在第 3 种类型上什么也不做,尽管我希望有一个更优雅的解决方案。
标签: c++ oop templates inheritance