我有一个类CS,它代表3D中的坐标系,即(x,y,z)
class CS
{
private:
double x;
double y;
double z;
}
CS::CS()
{
x = NULL;//this causes x = 0//i want the address of x to be 0x000000 & not x = 0
y = NULL;
z = NULL:
}
Run Code Online (Sandbox Code Playgroud)
我希望用户可以创建一个CS(0,0,0).在构造函数中,我想将x,y和z的地址初始化为NULL.这是为了区分用户定义的(0,0,0)和默认值.我正在动态创建CS的对象,因此使用以下代码没有意义:
class CS
{
private:
double *x;
double *y;
double *z;
}
CS:CS()
{
x = new double;
x = NULL;
//same for y & z
}
Run Code Online (Sandbox Code Playgroud)
首先,我想手动为任何变量(int或double或char)分配0x000000地址而不使用指针.有什么建议?
Moo*_*uck 13
您不能将x,y和z的位置更改为NULL,因为位置始终是CS对象的偏移量.它们将永远存在.这并不是说CS有一个x像你这样有车,就好像CS有一个x像你这样有头.你不能不会有头部.如果它们是整数,你将不得不使它们成为指针(就像你说你不想做的那样),因为这将是从初始化中告知未初始化的唯一方法.但是,doubles具有很少使用的魔术值:
CS:CS()
: x(std::numeric_limits<double>::quiet_NaN())
: y(std::numeric_limits<double>::quiet_NaN())
: z(std::numeric_limits<double>::quiet_NaN())
{ }
Run Code Online (Sandbox Code Playgroud)
用户可能不会将x,y和z设置为(非数字).