在我的文件中说我想做的事:
typedef vector<foo> foos
如果foo
是另一个文件中的一个类,我可以转发声明:class foo
.但是如果 foo
本身就是一个 typedef
一个原始的,我不知道如何处理。例如在另一个我做过的文件中说:
typedef int foo
我唯一的选择是#include
文件 foo
是typedef
'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/