例如,我有一个对数组(它是一个静态变量)a[],它表示点 A、B、C 的坐标:
pair<float,float> MyClass::a[]={{0,0},{320,568},{640,0}};
我想要另一个数组 b[] 来存储 AB 和 BC 的长度:
float MyClass::b[sizeof(a)/sizeof(pair<float,float>)-1]={
sqrt((a[1].first-a[0].first)*(a[1].first-a[0].first)+(a[1].second-a[0].second)*(a[1].second-a[0].second)),
sqrt((a[2].first-a[1].first)*(a[2].first-a[1].first)+(a[2].second-a[1].second)*(a[2].second-a[1].second))
};
但是 b[] 不是很容易维护,因为如果我向 a[] 添加元素,我需要手动更改 b[]。有没有可以自动生成 b[] 的方法?有没有类似的东西,例如:宏
float b[]={MACRO(a)};
或者
float b[]={MACRO(sizeof(a)/sizeof(pair<float,float>))};
或模板:
template<int i>
struct s{
float b[]={something a[i+1]-a[i]};
};
s<sizeof(a)/sizeof(pair<float,float>)> _s;
或其他允许我更改 a[] 大小而无需手动更改 b[] 甚至不需要修改代码的其他部分的设计模式?