首页 / 知识
关于类:C类的运行时知识
2023-04-16 06:19:00

C++ runtime knowledge of classes我有多个类都是从基类派生的,现在某些派生类将不会根据平台进行编译。我有一个可以让我返回基类对象的类,但是现在派生类的所有名称都经过了硬编码。 是否有一种方法可以确定在运行时最好编译了哪些类,因此我可以删除链接并改为提供可动态加载的库。 您是否正在寻找C运行时类注册?我找到了此链接(备份)。 这可能会完成您想要的事情,我不确定动态加载的模块以及是否可以使用相同的方法注册它们。 我不知道您实际上要完成什么,但是您可以在每个派生类的实现文件中放置一个单例构造函数,该构造函数将名称添加到列表以及指向工厂的指针。然后,该列表始终是最新的,并且可以创建所有已编译的类。 通常,在C中依赖运行时类型信息是一个坏主意。您所描述的似乎是工厂模式。您可能要考虑为每个平台创建一个特殊的工厂子类,该子类仅知道该平台上存在的类。 派生类的名称必须用C进行硬编码。没有其他方法可以使用它们。因此,不仅没有办法自动检测已经编译了哪些类,而且还没有办法使用该信息(如果存在)。 如果可以在运行时根据类的名称指定类,例如: std :: string foo = " Derived1 "; 中不起作用 然后,判断" Derived1 "是否已编译的功能将很有用。由于您必须直接指定类,例如: Base * object = new Derived1; //可以在C 中工作 所有检查均在编译时完成。 在运行时获取类信息时,有一些讨厌的,特定于编译器的技巧。相信我,您不想打开那种蠕虫。 在我看来,做到这一点的唯一严肃方法是在每个派生类上使用条件编译。在#ifdef块中,定义一个新常量,其中包含要编译的类名称。然后,名称仍然是硬编码的,但都在中央位置。 这听起来像是使用"编译时多态"或模板策略参数的地方。 请参阅Andrei Alexandrescu撰写的Modern C Design及其基于本书的Loki实现。另请参阅Wikipedia上的Loki页面。 如果每个类都有自己的动态库,只需检查该库是否存在。 |
最新内容
相关内容
脚本linux上运行命令?
脚本linux上运行命令?,工具,代码,时间,密码,系统,环境,名字,位置,第三,下来,typescript脚本中怎样运行Linux命令?1、Script可用于记录当前用户linux运行脚本时未找到命令?
linux运行脚本时未找到命令?,系统,信息,环境,软件,异常,官网,底部,电脑,平台,为什么说,linux无法找到脚本文件是什么意思?1、意思是:找不到执行linux命令行运行中断?
linux命令行运行中断?,连续,工作,系统,信息,程序,命令,设备,工具,网络,情况,Linux停止命令继续执行的方法是什么1、Linux 里有一些工具,可以脱vim运行linux命令?
vim运行linux命令?,系统,工作,信息,地址,命令,标准,时间,情况,工具,基础,linux系统中如何进入退出vim编辑器,方法及区别先按ESC,再输入冒号,在输linux下并行运行命令?
linux下并行运行命令?,系统,服务,工作,命令,环境,网络,暂停,文件,脚本,参数,linux多个用户同时执行命令会冲突吗不会冲突。解释:用户登录linuxjar运行命令linux?
jar运行命令linux?,项目,系统,平台,工具,上期,命令,选项,日志,文件名,目录,Linux下运行springboot项目jar包,启动日志输出教程1、创建一个名为jar运行命令linux?
jar运行命令linux?,项目,系统,平台,工具,上期,命令,选项,日志,文件名,目录,Linux下运行springboot项目jar包,启动日志输出教程1、创建一个名为linux下并行运行命令?
linux下并行运行命令?,系统,服务,工作,命令,环境,网络,暂停,文件,脚本,参数,linux多个用户同时执行命令会冲突吗不会冲突。解释:用户登录linuxlinux命令行后台运行?
linux命令行后台运行?,服务,状态,标准,暂停,命令,后台,连续,地方,工作,方法,linux中如何把一个进程放在后台运行可见,nohup 的使用是十分方便的脚本运行linux命令?
脚本运行linux命令?,系统,环境,工具,工作,位置,底部,代码,发行,官网,终端,linux下shell脚本命令PS1 主提示符,在特权用户下,默认的主提示符是#,在linux进程运行命令?
linux进程运行命令?,系统,工作,状态,地址,信息,进程,基础,命令,管理,软件,linux常用命令有哪些1、linux系统常用操作命令linux系统常用操作命linux显示运行命令?
linux显示运行命令?,系统,服务,状态,信息,工具,数据,电脑,标准,管理,时间,如何查看linux服务器运行状态?1、linux怎么查看服务器状态?我们一起