C++ 如何设计对可能包含不同类型的文件的访问权限?
我们这里有一种内部使用的文件类型,它基本上是一个表,列可以有不同的类型。还有一个带有标识的标题,标识哪列是哪种类型。用户通常不会一直生成表格布局,表格布局的集合相当有限(比如10个左右,但将来还会有更多) 我的问题是:<强>在C++中如何对这个文件建模最好的方法是?< /强> 我可以想到以下可能性:C++ 如何设计对可能包含不同类型的文件的访问权限?,c++,types,C++,Types,我们这里有一种内部使用的文件类型,它基本上是一个表,列可以有不同的类型。还有一个带有标识的标题,标识哪列是哪种类型。用户通常不会一直生成表格布局,表格布局的集合相当有限(比如10个左右,但将来还会有更多) 我的问题是:在C++中如何对这个文件建模最好的方法是?< /强> 我可以想到以下可能性: 创建一个模板文件类,其中模板参数是包含列类型的结构。 在另一个静态模板类中,将头ID作为静态成员,并提供一个endianness安全读取函数(通过显式模板专门化) 缺点:需要为每个文件创建结构和静态伙伴
因为文件是在运行时读取的,所以编译时解决方案不是真正的“解决方案”。 这是共享一个公共根的“多态类层次结构”的典型情况,其目的地是从
唯一\u ptr
或共享\u ptr
到动态\u cast
的集合
基本上,您可以从数据格式猜出类型,然后push_back
ax_ptr(新的实际类)
基类
可以帮助您识别所处理的实际类
,但这更说明了动态强制转换
的作用。只需使用一个虚拟析构函数,让基类为空
在文件上,每个记录都必须以一种“type_id”开头,它实际上告诉您以下数据所代表的实际类型。由于文件是在运行时读取的,所以编译时解决方案不是真正的“解决方案”。 这是共享一个公共根的“多态类层次结构”的典型情况,其目的地是从
唯一\u ptr
或共享\u ptr
到动态\u cast
的集合
基本上,您可以从数据格式猜出类型,然后push_back
ax_ptr(新的实际类)
基类
可以帮助您识别所处理的实际类
,但这更说明了动态强制转换
的作用。只需使用一个虚拟析构函数,让基类为空
在文件上,每个记录都必须以一种“type_id”开头,该id实际上告诉您以下数据所代表的实际类型。我应该补充一点,通常打开文件的人应该知道要接受哪种类型。否则,我们需要在案例1和案例3中编写一个包装器。我应该补充一点,通常打开文件的人应该知道接受哪种类型。否则,我们需要在案例1和案例3中编写包装器。