【发布时间】:2014-12-26 22:24:48
【问题描述】:
我正在研究一些编译器,我有多种不同的类型:
Box*
BoxedInt*
BoxedString*
...
它们基本上都是指向不同对象的指针,我想创建一个统一的类型,称为ObjectPointer,可以表示所有这些指针类型。我倾向于使用void *,因为我不想到处都有演员。我能做些什么?我可以这样做吗:
typedef Box* ObjectPointer
typedef BoxedInt* ObjectPointer
....
或者还有其他方法可以做到吗?对于这些指针,我只想要一个algebraic data type 之类的东西。顺便说一句,我使用的是clang。
我打算像普通类型一样使用新类型ObjectPointer。它不应该是类、结构或联合。假设我在更改后有一个函数Box* add(BoxedInt* lhs, BoxedInt rhs),它应该只是ObjectPointer add(ObjectPointer lhs, ObjectPointer rhs)。
【问题讨论】:
-
不允许将这些类的定义更改为继承自
ObjectPointer吗? -
取决于您打算如何使用这种组合类型。请添加更多详细信息。
-
那么,您使用的是哪种语言?还请删除标题中的标签,它们不属于那里。
标签: c++ c types compilation clang