C++ 将函数模板实例用作属性访问器
我正在使用Microsoft的C++ 将函数模板实例用作属性访问器,c++,templates,visual-c++,properties,C++,Templates,Visual C++,Properties,我正在使用Microsoft的\uu declspec(property())语言扩展为一组数据提供多种访问器。我试图通过使用函数模板来减少实际必须编写的访问器函数的数量,但在使其正常工作时遇到了困难。MSDN网站上没有太多关于你能做什么和不能做什么的信息,所以这有点棘手 理想情况下,我想要这样的东西: struct-vec2 { 浮动x,y; vec2(float x,float y):x(x),y(y){ }; 结构向量4 { 联合 { 结构{float x,y,z,w;}; 浮动数据[4]
\uu declspec(property())
语言扩展为一组数据提供多种访问器。我试图通过使用函数模板来减少实际必须编写的访问器函数的数量,但在使其正常工作时遇到了困难。MSDN网站上没有太多关于你能做什么和不能做什么的信息,所以这有点棘手
理想情况下,我想要这样的东西:
struct-vec2
{
浮动x,y;
vec2(float x,float y):x(x),y(y){
};
结构向量4
{
联合
{
结构{float x,y,z,w;};
浮动数据[4];
};
模板内联vec2get()
{
返回vec2(数据[a],数据[b]);
}
模板内联无效集(常量向量2&v)
{
数据[a]=v.x;
数据[b]=v.y;
}
//指定显式模板参数无效,会导致
//字符“而不是我怀疑您将用于类型双关的union
上的语法错误,您是否考虑过使用std::variant
?该类型双关是UB。@TEDLYNGOM:但OP不想要variant,而是“alias”@TedLyngmo我的意思是联合
;正如我提到的,我试图以不同的方式读取相同的数据。@Jarod42它是怎样的UB?不是说它是一个有效的反论点,但我在任何地方都看到过它的使用,而且从我的经验来看,它一直工作得很好——特别是因为我在联合中使用了VC++对匿名结构的非标准扩展.说到底,这并不是世界末日,因为我能够——也将——摆脱这种联盟,通过\uu declspec(property())
做一切。不过,很高兴知道这一点。