我只是想知道是否有一种方法可以从不是派生类的另一个类中调用函数。

例如...

如果我有一个具有功能颜色的Square类,如果我有另一个完全没有实现为Square的Triangle类,是否可以以某种方式在Triangle对象上调用Square的颜色函数?

我想知道是否可以在这里使用“朋友”,但是根据我的阅读,不能使用,除非我误解了所阅读的内容。

在不创建继承关系的情况下实现此目的的最佳方法是什么?

最佳答案

如果您想做的事情是这样的:

Square s;
Triangle t;
t.colour(); // invoke Square::colour() on a Triangle


抱歉,您不能这样做,除非您在Triangle中声明一个仅模仿Square::colour的功能的函数。

如果您确实需要共享该函数,那么明智的选择是将其声明为独立的模板化函数,如下所示:

template<typename Shape>
void colour(Shape s){
  //Do stuff
}


然后,为了允许这种访问Triangle和Square的内部胆量,请使相应类的void colour<Triangle>()void colour<Square>()成为朋友。

关于c++ - 调用属于另一个类的函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12831008/

10-12 22:32