直接访问struct-within-struct的属性?

时间:2014-04-09 12:10:54

标签: c++ properties struct

我制作了树形结构,其中两个定义如下;

template < class T, int W, int H >
struct dataRect {
    const int w = W;
    const int h = H;
    const int l = W * H;
    T d[W * H];
};

template < class T >
struct Vec2{
    T x;
    T y;
    // more things
};

第三个基本上只是一个包含前面每个结构之一的结构;

template < class T, int W, int H >
struct xDataRect {
    dataRect<T, W, H> r;
    Vec2<int> p;
};

现在假设我有一个xDataRect xdr,有没有办法可以直接访问前两个结构的属性

xdr.x = 3;

而不是

xdr.p.x = 3;

这样它们完全可以互换? ((换句话说,更改xdr.x会更改xdr.p,更改xdr.p会更改xdr.x))

这并不重要(我总是可以写xdr.p.x),但知道是否有办法可以做到这一点真好。

1 个答案:

答案 0 :(得分:0)

C ++有继承。

可以将Vec2<int>定义为xDataRect的基础。这样.x和.y可以在xDataRect对象上使用。

通过重载xDataRect::operator=(Vec2<int>),可以只设置x和y而不影响其他字段。