繁体   English   中英

如何向基类添加另一个初始化函数但不编辑基文件?

[英]How to add another Initialize function to base class but not edit base file?

我在初始化类时遇到问题,我想扩展一下它。 这是基类:

基本文件.cpp

Class Point3d
{
public:
    Point3d ();
    Point3d (double x, double y, double z);
    Point3d&   set (double x, double y, double z);
    double x, y, z;
}
Point3d :: Point3d (): x (0.0), y (0.0), z (0.0)
{
}
inline Point3d &
Point3d :: set (double xx, double yy, double zz)
{
     x = xx;
     y = yy;
     z = zz;
     return * this;
    }
.....

编辑

我想在声明Point3D pt {1,1}时,它意味着z = 0,所以如果我没有编辑原始文件,如何在基类上但从另一个文件中添加默认初始化函数z = 0,它看起来像这个:

Point3d::Point3d(double xx, double yy, double zz=0) { x = xx; y = yy; z = zz; }
//or
Point3d :: Point3d (double xx, double yy)
{
     x = xx;
     y = yy;
     z = 0;
     return * this;
}

我想过使用派生类,但我想要的是扩展基类,因为我想直接使用基类,我搜索了部分类以及许多不同的方法,但仍然失败。

您只能在其定义中向类添加成员,并且一个类只能有一个定义。

正如您在问题中指出的那样,稍后扩展类是通过继承完成的。

如果你想在你的类中set一个函数,你需要在类定义中声明它:

class Point3d
{
public:
    Point3d ();
    Point3d (double x, double y, double z);
    Point3d& set (double xx, double yy, double zz = 0);
    double x, y, z;
};

另请注意,您不需要set的第二个定义,因为您已经在使用z的默认参数。

您的代码中还有一些语法错误。 特别是set在其函数头中缺少返回值。

你不能。

你必须在你的类头中声明你的成员函数、成员方法或构造函数才能在另一个地方定义它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM