有什么方法可以根据其返回类型重载函数?

时间:2014-01-21 21:14:18

标签: c++ inheritance

http://pastebin.com/afsNHhCu (我只包含代码,因为人们总是要求代码。虽然此代码现在不会编译)

我写了一个小型的爬虫游戏(虽然还不是真正的游戏),但我遇到的问题是查找给定方格上的内容。 A编写了一个函数search_coord,它搜索数据库以查看对象是否在给定的方块上,并返回它找到的任何内容。当我只处理一些简单的类时它工作得很好,但从那时起我就尝试合并继承,我现在无法弄清楚如何让它工作。

最初,search_coord的返回类型是Object& (Object是大多数其他类派生自的基类)。我以对象向量的形式将所有对象存储在数据库中。 我需要创建更多的数据库(对于Npcs和图形),和 我认为因为Ob​​ject是一个基类,所以search_coord也能够返回派生类(显然不是)。

我尝试重载search_coord以处理不同的派生类型,但唯一的区别是返回类型,并且您不能基于此重载。 然后,我尝试使用仿函数(在上面的代码中)。这几乎可以工作,除了重载(null?)运算符不能接受参数,这是函数工作所必需的。我能看到的唯一方法是将参数内部合并到search_coord仿函数中,并在每次需要调用search_coord时单独更改它们。这看起来像是一个过于复杂的想法,所以我可能会一起划过仿函数。 如果search_coord是Object的成员,那将很容易。我可以将其设为虚拟,并在所有派生类中重新定义它(如果我理解它正确使用)。问题是,它必须是(据我所知)数据库的成员。我尝试使它成为Object的成员,但意识到我不确定Object的哪个实例调用该函数(假设该函数的目的是找到Object的实例)。

非常感谢任何帮助!

(我在写这篇文章的时候只是想到了。我可以将search_coord函数设为虚拟静态,这样我就不会调用任何一个Object实例来使用它吗?)

谢谢

0 个答案:

没有答案