![](/img/trans.png)
[英]How to initialize base class objects which are member variable of another class?
[英]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.