C++ 可以在父类中引用子类吗?

C++ 可以在父类中引用子类吗?,c++,oop,inheritance,C++,Oop,Inheritance,这是我的后续文章 我创建了两个类RadAngle和DegAngle,后者继承了前者。因为我想避免代码重复,所以我从RadAngle继承DegAngle 注意到在RadAngle,我想 class RadAngle { ... RadAngle toRad(const DegAngle& dang) {.. do something..} // <-- child class reference ... } 类雷达角{ ... RadAngle-toRad(const-DegAn

这是我的后续文章

我创建了两个类RadAngle和DegAngle,后者继承了前者。因为我想避免代码重复,所以我从RadAngle继承DegAngle

注意到在RadAngle,我想

class RadAngle {
...
RadAngle toRad(const DegAngle& dang) {.. do something..}  // <-- child class reference
...
}
类雷达角{
...

RadAngle-toRad(const-DegAngle&dang){..做点什么..}/你不需要用相同的代码编写两个类,你可以使用一个类模板,让编译器为你“编写”代码

像这样的事情:

template<typename Unit>
struct Angle
{
    // Member functions ...
    float magnitude;
};

struct Deg;
struct Rad;

using RadAngle = Angle<Rad>;
using DegAngle = Angle<Deg>;

RadAngle toRadians(const DegAngle& inDegrees)
{
    // ...
}

DegAngle toDegrees(const RadAngle& inRadians)
{
    // ...
}
模板
结构角
{
//成员函数。。。
浮动幅度;
};
结构度;
结构无线电;
使用RadAngle=角度;
使用DegAngle=角度;
雷达角环面(常数、倾角和折射率)
{
// ...
}
角度到角度(常数雷达角和内辐射角)
{
// ...
}

您不需要用相同的代码编写两个类,您可以使用类模板,让编译器为您“编写”代码

像这样的事情:

template<typename Unit>
struct Angle
{
    // Member functions ...
    float magnitude;
};

struct Deg;
struct Rad;

using RadAngle = Angle<Rad>;
using DegAngle = Angle<Deg>;

RadAngle toRadians(const DegAngle& inDegrees)
{
    // ...
}

DegAngle toDegrees(const RadAngle& inRadians)
{
    // ...
}
模板
结构角
{
//成员函数。。。
浮动幅度;
};
结构度;
结构无线电;
使用RadAngle=角度;
使用DegAngle=角度;
雷达角环面(常数、倾角和折射率)
{
// ...
}
角度到角度(常数雷达角和内辐射角)
{
// ...
}

如果你不回答你的问题,那怎么办?“以度为单位测量的角度”真的是一种特殊的“以弧度为单位测量的角度”吗?阅读您接受的答案中的链接。@Passenger关于类型安全问题,我已经使用了一个类RadAngle。我认为它体积小,并且很快开发出来供我使用。因此,我采用这种方法而不是其他方法。我在上一篇文章中已经提供了RadAngle类,但当我继续使用Deangle类时,我遇到了当前帖子中的错误。我的主要目的是类型安全,而不向当前帖子添加更多代码program@molbdnilo,我希望避免在我的代码中混合使用Degree&Radian&float/double类型的操作,这是我正在修复的错误now@ShawnLe我不明白你刚才说的话。这里的重点不就是强烈地重新键入一个数字吗?链接的帖子就是这样做的,没有任何样板,你似乎在暗示这是关于什么的,这并不能回答你的问题?难道“以度为单位测量的角度”真的是一种特殊的“以弧度为单位测量的角度”吗?阅读您接受的答案中的链接。@Passenger关于类型安全问题,我已经使用了一个类RadAngle。我认为它体积小,并且很快开发出来供我使用。因此,我采用这种方法而不是其他方法。我在上一篇文章中已经提供了RadAngle类,但当我继续使用Deangle类时,我遇到了当前帖子中的错误。我的主要目的是类型安全,而不向当前帖子添加更多代码program@molbdnilo,我希望避免在我的代码中混合使用Degree&Radian&float/double类型的操作,这是我正在修复的错误now@ShawnLe我不明白你刚才说的话。这里的重点不就是强烈地重新键入一个数字吗?链接的帖子就是这么做的,没有任何样板文件,你似乎在暗示有谢谢你,molbdnilo!这是我喜欢的方法。我不需要修改太多当前的代码,它工作得很好。这些空结构也被称为幻影类型吗?谢谢你,molbdnilo!这是我喜欢的方法。我不需要修改太多我的代码当前的代码,它的工作非常出色。这些空结构也被称为幻影类型吗?