复制初始化列表中的对象

时间:2013-06-04 07:07:48

标签: c++

如何将Axes (Axes const &crAxes) { *this = crAxes; }更改为Axes (Axes const &crAxes) : (*this)(crAxes) {},以便复制初始化列表中的对象(在X,Y和Z初始化为默认值之前)。

改变形式:

struct Axes
{
    Axes () : X(0.f), Y(0.f), Z(0.f) {}
    Axes (Axes const &crAxes) { *this = crAxes; }

    float   X;
    float   Y;
    float   Z;

};

这样的事情:

struct Axes
{

    Axes () : X(0.f), Y(0.f), Z(0.f) {}
    Axes (Axes const &crAxes) : (*this)(crAxes) {}

    float   X;
    float   Y;
    float   Z;

};

1 个答案:

答案 0 :(得分:4)

你不能在复制c-tor中做这样的事情。 简单地使用

Axes(const Axes& rhs) : X(rhs.X), Y(rhs.Y), Z(rhs.Z) {}

但是,这里没有复制c-tor,因为默认实现的复制c-tor会做同样的事情(memberwise-copy)。