Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >跨平台C++...在一个文件中使用特定于平台的代码段,还是使用单独的类?

跨平台C++...在一个文件中使用特定于平台的代码段,还是使用单独的类?
EN

Stack Overflow用户
提问于 2012-04-19 11:19:05
回答 4查看 1.1K关注 0票数 2

编写C++的东西有点低级,你经常不得不写特定于操作系统的东西。让我们以MessageBox()函数为例(这不是一个很好的例子,因为框架可以做到这一点,但它很容易理解)。

假设您有一个基类App,每个项目都提供一个像MyApp这样的定制子类。对于每个操作系统,您可以使用具有多个#ifdef块的单个App::MessageBox()方法。或者,您可以有一个基类/接口,每个操作系统的子类提供实现。例如AppWin32 : public App

在某种程度上,后者在我看来更整洁,但另一方面,这意味着你的MyApp必须使用一些丑陋的代码来确保它继承了正确的特定于操作系统的基类。

更好的方法是什么?

EN

回答 4

Stack Overflow用户

发布于 2012-04-19 11:32:39

作为文件/套接字/内存/数据库/...与GUI函数相比,不同平台的函数差别较小,大多数代码都是为所有体系结构共享/编译的。我只是在这些函数/类中的特定于平台的代码周围使用了#ifdef块。

对于完全不同的GUI (或任何其他复杂的子系统)代码,您应该在平台目录下使用不同的实现(不是头文件,可能是内部头文件)。(windows/window.cpp,xwin/window.cpp,macosx/window.cpp,...)

看看这种方案的GUI工具包,wxwidgets或fltk或大多数其他工具……

票数 2
EN

Stack Overflow用户

发布于 2012-04-23 08:36:27

在我看来,有些类太简单了,比如open/close,#ifdef对于这些情况来说并不是坏事。我不认为为一个简单的功能提供一个抽象平台层是一个好主意,它是过度工程。

但是跨平台是很复杂的。如果你想提供一个目标平台上不存在的特定平台功能,你应该创建一个抽象的平台层,并为每个平台实现它,例如Windows中的剪贴板与X11中的X选项有很大的不同,所以你必须维护不同的数据结构和算法来使它们统一。

票数 1
EN

Stack Overflow用户

发布于 2012-04-19 11:22:42

如果您将实现移动到多个.cpp文件,则只能使用一个#ifdef块。但是,如果需要的话,您也可以将此方法与第二种方法结合使用。不过,为了简单起见,我猜多个定义文件就可以做到这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10226914

复制
相关文章
jQuery动态添加/删除元素及内容
添加新的 HTML 内容,四种方法:可根据上面的图片来区分四种方法插入元素的位置。
德顺
2019/11/12
7.3K0
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
指定元素中包含 id 属性的, 如: $("span[id]")  代码如下: <span id="span1" name="S1">AAA</span><br/>  <span id="span2" name="S2">BBB</span><br/>  <span name="Sx3">CCC</span><br/>  <span name="Sx4">DDD</span><br/>  <div id="div1" name="Dx1">EEE</div>  <div name="D2">FFF</div
hbbliyong
2018/03/06
1.6K0
jquery 节点的删除
detach()方法删除跟remove()一样,在删除节点后,同样也可以赋值给变量再次使用。
坚毅的小解同志的前端社区
2022/11/28
1.7K0
jquery 节点的删除
jquery根据属性选择
有信仰的人不会孤独。——阿列克谢耶维奇 分享一个jquery选择器的小技巧 我们可以通过自定义属性键值选中一个元素 例如如下元素: <div ruben="vampire">阿超</div> 然后我们通过ruben=vampire选中这个div 就可以如下写法: let vampire = $('div[ruben="vampire"]') 我们可以简单测试一下输出里面的内容 <div ruben="vampire">阿超</div> <script type="text/javascript">
阿超
2022/08/17
2K0
jquery根据属性选择
jquery点击删除按钮,删除当前的div
现在有多行div,共用一个删除事件,点击删除的时候,会把页面所有的div全都删掉了,但是我只需要点击哪一行div里面的删除按钮,就删除哪一行,其实很简单,只需要写一个this事件即可。
王小婷
2019/07/08
5.5K0
JavaScript进阶内容——jQuery
我们在前面的文章中已经掌握了JavaScript的全部内容,现在让我们了解一下JavaScript库
秋落雨微凉
2022/10/25
5.5K0
JavaScript进阶内容——jQuery
jquery 表格内容搜索
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title></title> <link href="css/style.css" rel="stylesheet" type="text/css" /> <script src="../../scripts/jquery.js" type="text/javascript"></script> <script type="text/javascript">
用户5760343
2019/10/10
2.3K0
jquery 表格内容搜索
activity结束之后刷新之前的activity的内容
点击添加按钮之后-----弹出一个新的activity--------在新的activity将数据输入保存之后,关闭当前的activity回到之前的activity刷新内容 实现:使用onActivityResult 启动页: btnButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent i
欢醉
2018/01/22
9270
jQuery Mobile修改button的内容
jQuery Mobile修改button的内容。
业余草
2019/01/21
1.8K0
jQuery Mobile修改button的内容
Linux Vi 删除全部内容,删除某行到结尾,删除某段内容 的方法
1.打开文件 vi filename  2.转到文件结尾 G   或转到第9行 9G   3.删除所有内容(先用G转到文件尾) ,使用: :1,.d   或者删除第9行到第200行的内容(先用200G转到第200行) ,使用 :9,.d   删除说明:这是在vi中 ,“.”当前行 ,“1,.”表示从第一行到当前行 ,“d”删除
joshua317
2018/04/10
7.5K0
如何根据日志查看删除的数据(转译)
原文地址:https://raresql.com/2011/10/22/how-to-recover-deleted-data-from-sql-sever/   在我的SQLServer的工作中,最经常被问到的一个问题就是“能恢复删除的数据吗?”   我的回答是肯定的,注意下面的数据类型是可以通过脚本直接恢复的,当然数据库的版本要在SQLServer2005 以上才行。 经过讨论发现2008和2012以及2014的express版本也不能实现脚本直接恢复。 image text uniqueidentif
用户1217611
2018/01/30
7.5K0
jQuery中的常用内容总结(一)
jQuery中的常用内容总结(一) 前言 不好意思(✿◠‿◠),由于回家看病以及处理一些其它事情耽搁了,不然这篇博客本该上上周或者上周写的;同时闲谈几句:在这里建议各位开发的童鞋,如果有疾病尽快治疗,不要拖,大病的话甚是~,身体是本钱,如果人的身体健康是一的话,若没有前面的一,后面再多的零也是徒然,同时,建议在开发的时候保持一个好的心态,积极面对需求和技术难点,不要像我一样在难的地方朝一个地方死钻、而且经常性考虑需求之外的需求,这样都是不太好,尽量以"需求"的心态去"开发",而不是以"开发"的心态做"需求
上帝
2018/05/18
1.1K0
jQuery中的常用内容总结(二)
jQuery中的常用内容总结(二) 转载请注明地址: http://www.cnblogs.com/funnyzpc/p/7571993.html 前言   距离上次博客更新已经有二十来天了(●′ω`●),恍惚之间时间已经从身边流走~,好难过≡(▔﹏▔)≡;所以,我决定这次不管熬夜到几点都要把本节和第三节内容全部写完~ 内容提要 ---- 选择器(上一节) 选择器的扩展方法(上一节) 节点的CSS操作及节点其他操作(上一节) Ajax同步与异步(本节) 事件(本节) 弹窗(本节) 参数序列化(第三节) 遍
上帝
2018/05/18
1.5K0
jQuery中的常用内容总结(一)
jQuery中的常用内容总结(一) 前言 不好意思(✿◠‿◠),由于回家看病以及处理一些其它事情耽搁了,不然这篇博客本该上上周或者上周写的;同时闲谈几句:在这里建议各位开发的童鞋,如果有疾病尽快治疗,不要拖,大病的话甚是~,身体是本钱,如果人的身体健康是一的话,若没有前面的一,后面再多的零也是徒然,同时,建议在开发的时候保持一个好的心态,积极面对需求和技术难点,不要像我一样在难的地方朝一个地方死钻、而且经常性考虑需求之外的需求,这样都是不太好,尽量以"需求"的心态去"开发",而不是以"开发"的心态做"需求
上帝
2018/06/26
1K0
jQuery中的常用内容总结(二)
转载请注明地址: http://www.cnblogs.com/funnyzpc/p/7571993.html
上帝
2018/09/27
1.2K0
jQuery中的常用内容总结(二)
jQuery - 设置内容和属性
下面的例子演示如何通过 text()、html() 以及 val() 方法来设置内容:
陈不成i
2021/07/22
2.1K0
jQuery中的常用内容总结(二)
jQuery中的常用内容总结(二) 转载请注明地址: http://www.cnblogs.com/funnyzpc/p/7571993.html 前言   距离上次博客更新已经有二十来天了(●′ω`●),恍惚之间时间已经从身边流走~,好难过≡(▔﹏▔)≡;所以,我决定这次不管熬夜到几点都要把本节和第三节内容全部写完~ ajax在实际开发中用的特别多,尤其是前后端分离的今天甚是~,接下来所说的ajax都是经过jQuery封装过的,至于写法大致有ajax标准写法和jQuery简写两种,下面先给出这两种写
上帝
2018/06/26
3K3
jQuery中的常用内容总结(三)
转载请注明地址:http://www.cnblogs.com/funnyzpc/p/7571998.html
上帝
2018/09/27
8420
jQuery中的常用内容总结(三)
jQuery中的常用内容总结(三)
jQuery中的常用内容总结(三) 转载请注明地址:http://www.cnblogs.com/funnyzpc/p/7571998.html 内容提要 ---- 选择器(第一节) 选择器的扩展方法(第一节) 节点的CSS操作及节点其他操作(第一节) Ajax同步与异步(上一节) 事件(上一节) 弹窗(上一节) 参数序列化(本节) 遍历(本节) 其他(本节) ---- A>表单参数序列化提交 如果没有借助jQuery,表单可以直接提交,这样带来两个问题就是安全(get提交)或表单参数验证障碍,嗯~,可能
上帝
2018/05/18
2K1
jQuery中的常用内容总结(三)
jQuery中的常用内容总结(三) 转载请注明地址:http://www.cnblogs.com/funnyzpc/p/7571998.html ---- A>表单参数序列化提交 如果没有借助jQ
上帝
2018/06/26
8480

相似问题

jQuery根据内容删除分区

22

jquery在删除之前的内容后追加内容

21

使用jQuery根据td的内容删除td

45

JQuery如何根据子元素的内容删除元素

45

在使用jquery克隆文本内容之前将其删除

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档