c 语言 成员变量模板,c – 模板成员变量特化

你可以做的一件事是创建一个帮助器模板,生成一个结构与联合类型,它是你的类型的“核心”:

template

struct Vector3_core {

union {

T data[3];

struct { T x, y, z; };

};

T length() { ... }

};

并根据需要将其专门用于浮动:

template <>

struct Vector3_core {

union {

float data[3];

struct { float x, y, z; };

__m128 xmm;

};

float Length() { ... }

};

然后你可以使用简单的继承来编写主类,如:

template class Vector3 : public Vector3_core

{

// Need to pull anonymous-struct members into this class' scope

using Vector3_core::x;

using Vector3_core::y;

using Vector3_core::z;

// All your functions...

};

请注意,此处没有虚拟调度.此外,您不需要将继承公开,您可以将其设为私有并公开转发Length函数.

您还可以进一步使用完整的CRTP,如果有用的话.

这是Coliru的代码示例,显示该想法至少符合C 11标准.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值