.NET中的每个对象都从公共根"Object"继承(直接或间接).在C++中是否有这样一个共同的对象根?如何将任何对象传递给函数?
public void DoSomeStuff(object o) { ... }
Run Code Online (Sandbox Code Playgroud)
编辑:澄清,目的:在该函数中,我想调用指向成员函数的指针.为此,我需要对象实例和指向所需函数的指针.为了简化可读性,我想制作一个包含所需信息的包装器.我不确定这是不是最好的方式,但这是背景的想法.
没有共同的根类.使用void*将任何对象传递给函数,或者更好地定义一些基类.
模板函数存在并且避免需要所有类的这种根父级。
template <class T>
void DoSomeStuff(T const &t) {
// Do the stuff with t...
t.callTheFunction();
}
Run Code Online (Sandbox Code Playgroud)
如果您的所有对象都有一个成员函数 callTheFunction(),那么您将获得与具有根基类完全相同的行为,但具有相同的要求(您的所有类都有一个具有该名称的函数)。
此外,您还DoSomeStuff()可以获得额外的好处,即能够为一些不属于您的类专门化模板函数,并且无法继承您的虚拟成员函数。