2

来自没有 typedef 的 Java 世界,我有一个 C++ 开发人员的问题:

我的任务是用 C++ 重写一个大型 MATLAB 项目。为了了解代码的结构,我已经开始在没有实际实现功能的情况下重新构建模块和类结构。

我知道我经常需要像Vectorand这样的类/类型ParameterList,这将由我尚未决定的一些框架提供。

所以我创建了一个中央头文件Typedefs.h,其中我有类型定义,如

typedef void Vector; // TODO: set vector class
typedef void ParameterList; // TODO: set parameter list class

目前,这些设置为 void,但我可以使用这些类型来编写类骨架和方法签名。稍后我可以用实际类型替换它们。

这是有道理的吗?如果是,有没有办法避免Typedefs.h在每个文件中手动包含?

4

2 回答 2

6

我怀疑这会起作用,除非您使用例如Vector*. 您将无法拥有Vector对象或参数,因此几乎没有意义。

对于用作指针,您可以很好地进行前向声明。

无论如何,我真的不认为有任何需要。您可以声明一个空类而无需实现它,而且它甚至比 a 更容易编写typedef

 typedef void Vector;

对比

 struct Vector{};
于 2012-04-17T13:32:02.610 回答
3

请注意,您将无法使用typedef映射到相同类型的 s 重载函数:

void foo(Vector);
void foo(ParameterList);   // error: foo(void) already declared
于 2012-04-17T13:32:12.820 回答