c++ - 基类和派生类的友元函数

标签 c++ class friend

我有一个基类 Fraction 和一个派生类 iFraction。 Fraction 代表假分数,iFraction 代表带分数。

class Fraction {...};
class iFraction : public Fraction {...};

现在,我想声明这两个类的友元函数,即convertF。函数convertF可以将假分数(Fraction)转换为带分数(iFraction)。 我这样做有多冷? 实际上,我想这样声明该函数:

friend iFraction convertF (Fraction &Fra);

但是,它不能在基类 Fraction 中声明。为什么?

最佳答案

为此您不需要友元函数。有两种方法可以使用dynamic_cast 或编写一个转换构造函数来实现此目的,该构造函数接受Fraction 对象并将其转换为iFraction 对象。我不太确定第二个选项是否是一个好的选择,但值得一试。

关于c++ - 基类和派生类的友元函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10227802/

相关文章:

c++ - 来自 vector 图像的 OpenGL 自动代码生成器

c++ - 存储各种尺寸也各不相同的结构的好方法?

c++ - 映射、类、成员函数

c++ - 合格类(class)成员

c++ - 从 Stroustrup 的 C++ 编译模板友元示例时出现问题

c++ - 当你是 friend 时,为什么 GCC 不允许从私有(private)嵌套类继承?

c++ - 部分模板成员特化

c++ - 将 QTreeWidgetItem 连接到数据库

C++:从类外部访问公共(public)成员函数

c++ - 如何通过使用友元函数来操作数据嵌套的私有(private)类