c++ - 将 typedef 转发声明到原始类型

标签 c++ include typedef primitive forward-declaration

在我的文件中说我想做的事:

typedef vector<foo> foos

如果foo是另一个文件中的一个类,我可以转发声明:class foo .但是如果 foo本身就是一个 typedef一个原始的,我不知道如何处理。例如在另一个我做过的文件中说:

typedef int foo

我唯一的选择是#include文件 footypedef 'd in, or to do typedef vector<int> foos ?为了可读性和关​​联性,我宁愿避免这两种选择。还有什么我可以做的吗?

最佳答案

编译器必须知道分配类型的大小才能构建代码。

例如,解决方案是使用句柄的语义。

它们通常是空的*。

当大小合适时,您可以将它们转换为数字。

typedef void* foohandle;

reinterpret_cast<foohandle>(foo);

reinterpret_cast<int32_t>(foo handle);

但更好的做法是使用句柄作为具体类型的指针。

关于c++ - 将 typedef 转发声明到原始类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45508440/

相关文章:

c++ - fatal error C1014 : too many include files : depth = 1024

C++ typedef 静态函数指针 : undefined symbol

c++ - AVR GCC 本地数组初始化

php - PHP 函数包含文件的设计技巧

c++ - C/C++ : Static function in header file, 是什么意思?

c++ - 编译器忽略我的包含 -I 新库版本

compiler-errors - CodevisionAVR类型定义

c++ - 使用不带 typedef 的 <ratio>

c++ - C++ 中的无分支 if 是什么样子的?

c++ - 将互斥量数组传递给函数时出现错误 C2664