typedef 使用不同的类型名称更改值名称
typedef changing value names with different type names
如果我有:
typedef struct Foo {
int x, y;
} Point, SomethingElse;
我希望Foo.x
等于Point.x
但我希望SomethingElse.a
也等于Point.x
,或者换句话说,我希望SomethingElse
与Foo
和Point
完全相同,但它的两个变量命名为其他事物。如果我必须制作一个全新的结构,这似乎是一种浪费。
如果不需要为不同类型的变量名强制执行不同的变量名称,那么使用联合呢?
typedef struct Foo
{
union
{
int a;
int x;
};
union
{
int b;
int y;
};
} Point, SomethingElse;
您可以改为将变量视为对象中的数组,并使用数组运算符使用具有所需名称的变量检索值。
struct example{
int data[2];
int& operator[](int index){
//range check index before lookup if desired
return data[index];
}
};
int X=0;
int Y=1;
int A=0;
int B=1;
typedef example Point;
typedef example SomethingElse;
int main(int argc,char** argv){
Point p;
SomethingElse s;
p[X]=0;
s[A]=0;
return 0;
}
这是您可以执行类似请求的操作的一种方法,但我建议使用每个结构中所需的名称声明唯一的结构,而不是尝试为结构中的变量名称提供别名。只声明第二个结构似乎不那么令人头疼。
你有 3 个不同的 typdef,它们是在一个语句中声明的标识结构。 SomethingElse
没有名为 a
的成员。
也许你想要一个typedef union
?
相关文章:
- 有没有一种方法可以通过"typedef"为重新定义的基本类型定义特征和强制转换运算符
- 使用typedef'ed返回类型声明友元函数时出现编译器错误
- 从 Typedef 数据类型中删除常量
- 使用智能指针指向 C 库中的结构,该结构通过 typedef 隐藏实现(即不完整的类型)
- 是否可以分别专注于 typedef 及其基础类型?
- 如何对绑定的成员方法进行typedef,然后将该类型用作模板参数
- 显式调用 typedef'd 类类型的析构函数的正式正确方法
- "typedef"类型名称是否可以像"struct"定义那样声明指向结构的指针?
- 具有未声明/未定义类型的 typedef 结构
- 使用 pybind11 绑定 typedef 类型的正确语法是什么?
- 通过 typedef 模板<类型名 T、T> 强制模板实例化 - 为什么有效?
- C和C 类型(TypeDEF)之间的差异
- 如何通过从变量中获取类型来访问内部 typedef
- C 通过Typedef定义新类型
- 使用#Define和Typedef与数据类型A一起使用
- typedef 类型不匹配,将其传递到函数中
- 如何使用函数签名的 typedef 作为 std::function 的类型参数
- 从 csv 文件中获取不同类型的数据,并将其放入 C++ 中的 typedef 结构中
- typedef 中的自定义类型为 Qt MetaType
- Swig 简单类型 typedef 参数