首页 / 知识
关于C#:模板分布在多个文件中
2023-04-13 17:16:00
Templates spread across multiple files当在多个文件中声明模板时,
C似乎很讨厌。更具体地说,当使用模板化类时,链接器应在单个编译器目标文件中期望该类的所有方法定义。当您考虑标头,其他声明,继承等时,情况就会变得非常混乱。 对于在多个文件中组织或重新分配模板化的成员定义,是否有任何一般性建议或变通办法?
是的;不要。 C规范允许编译器在实例化点"看到"整个模板(声明和定义),并且(由于任何实现的复杂性)大多数编译器都保留了此要求。结果是#inclusion任何模板头还必须#include实例化模板所需的任何和所有源。 处理此问题的最简单方法是将所有内容转储到标头中,在可能的地方内联,在必要时外出。 如果您真的认为这是不可接受的侮辱,一个常见的选择是将模板拆分为通常的标头/实现对,然后在标头的末尾#include实现文件。 C的"导出"功能可能会或可能不会提供其他解决方法。该功能支持不佳且定义不清;尽管从原则上讲它应该允许模板的某种单独的编译,但是并不一定消除了编译器能够看到整个模板主体的要求。 跨多少个文件?如果您只想将类定义与实现分开,请在C常见问题解答中尝试本文。这是目前我知道的唯一方法,但是某些IDE(例如Eclipse CDT)无法正确链接此方法,您可能会遇到很多错误。但是,编写自己的makefile或使用Visual C始终对我有用:-) 当/如果您的编译器支持C 0x,则可以使用 请参阅此处以进行简要说明。 此外,David Vandevoorde和Nicolai M. Josuttis撰写的C模板:6.3部分,"分离模型",完整指南介绍了其他选项。 |
最新内容
相关内容
linux分隔文件命令?
linux分隔文件命令?,系统,信息,文件,命令,位置,指令,文件夹,目录,前缀,方法,linux系统下大文件的分割/搜索/导出split命令分割文件成每个文件1linux改文件权限命令?
linux改文件权限命令?,系统,工具,档案,权限,文件,信息,命令,目录,选项,用户,在linux系统中修改文件权限使用的命令是在 Linux 中,要更改一个文linux命令交换文件名?
linux命令交换文件名?,命令,文件,数据,名称,工具,地址,软件,系统,基础知识,文件名,linux中用什么命令移修改文件夹名1、linux下使用mv命令来移linux改变文件所有者的命令?
linux改变文件所有者的命令?,系统,工具,文件,命令,信息,名称,用户组,用户,所有者,权限,linux修改文件权限?打开linux系统,在linux的桌面的空白linux文件夹转移命令?
linux文件夹转移命令?,系统,文件,命令,位置,材料,信息,工具,电脑,目录,源文件,Linux如何移动文件夹(Linux如何移动文件)linux如何移动文件,为您linux转移文件命令?
linux转移文件命令?,文件,命令,密码,电脑,位置,名称,信息,系统,目录,目标,linux怎么将一个文件移动到另一个目录下1、如果目标文件是到某一目linux下替换文件命令?
linux下替换文件命令?,文件,一致,评论,名称,标的,资料,工作,命令,字符串,内容,linux替换原来文件的命令方法1:sed -i s/被替换的内容/要替换成linux文件nl命令?
linux文件nl命令?,地址,工作,信息,系统,情况,标准,实时,对比,百度,命令,linux查看日志命令第一种:查看实时变化的日志(比较吃内存)。最常用的:taillinux寻找文件夹命令?
linux寻找文件夹命令?,名称,命令,文件,位置,工作,标准,目录,子目录,文件名,字符串,linux文件夹查询命令有哪些less命令,less命令的功能几乎和molinux跳到文件尾命令?
linux跳到文件尾命令?,系统,文件,命令,管理,状态,实时,末尾,光标,内容,编辑,linux复制第1,2,3行数据到文件末尾sed -n 4,$p file.txt$匹配文件linux把文件复制命令?
linux把文件复制命令?,名字,文件,软件,系统,位置,目录,命令,源文件,目标,文件夹,在Linux中,要将指定源文件复制到目标文件,但不覆盖原有文件时linux文件夹合并命令?
linux文件夹合并命令?,文件,对比,第一,下来,命令,文件夹,两个,字段,内容,数组,在linux下我有两个文件夹w1,w2,怎样把它们合并到一个文件夹1、