如何处理 C++ 接口中的单元

2024-02-03

我目前正在设计一个 API,我希望用户能够编写如下代码:

PowerMeter.forceVoltage(1 mV);
PowerMeter.settlingTime(1 ms);

目前我们使用如下定义来做到这一点:

#define mV *1.0e-03

这使得用户编写代码非常方便,而且可读性也很强,但当然也有缺点:

int ms;

会抛出一些难以理解的编译器错误。所以我正在寻找更好的解决方案。

我尝试了新的 C++11 文字,但我能实现的只是:

long double operator "" _mV(long double value) {
  return value * 1e-3;
}
PowerMeter.forceVoltage(1_mV);

最后,API 并不关心像伏特或秒这样的单位,而只关心数字,所以我不想做任何检查你是否真的在forceVoltage 中输入了伏特数。所以这也应该是可能的:

PowerMeter.forceVoltage(2 ms);

除了遵守定义之外还有什么想法吗?


通过为不同的电流创建类(ms,mV)来稍微扭转一下怎么样?

e.g.

PowerMeter.forceVoltage( mV(1) );  
PowerMeter.settlingTime( ms(1) )

它对用户来说非常清楚,并且可以说不难阅读,而且您还可以免费进行类型检查。不同单元有一个共同的基类将使其更容易实现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何处理 C++ 接口中的单元 的相关文章

  • 我如何理解这个 C 类型声明?

    double bar int double double double double 在查看讲座幻灯片时 我发现了留给学生的练习 用简单的英语来说 什么是类型bar在这个 C 声明中 Please帮助我解决这个问题 我什至不知道从哪里开始
  • EF Core 通过完全替换断开集合导航属性的更新

    使用 EF Core 5 0 我有一个 SPA 页面 可以加载Group实体及其集合Employee来自 API 的实体 var groupToUpdate await context Groups Include g gt g Emplo
  • ASP.NET Web API 客户端 ProgressMessageHandler Post 任务卡在 WinForm 应用程序中

    我在用着HttpClient and ProgressMessageHandler来自MS ASP NET Web API 客户端库 http nuget org packages Microsoft AspNet WebApi Clien
  • 读取 C# 中的默认应用程序设置

    我的自定义网格控件有许多应用程序设置 在用户范围内 其中大部分是颜色设置 我有一个表单 用户可以在其中自定义这些颜色 并且我想添加一个用于恢复默认颜色设置的按钮 如何读取默认设置 例如 我有一个名为的用户设置CellBackgroundCo
  • 类特定的新删除运算符是否必须声明为静态

    标准中是否要求类特定的 new new delete 和 delete 是静态的 我可以让它们成为非静态成员运算符吗 为什么需要它们是静态的 它们被隐式声明为静态 即使您没有键入 static
  • 信号处理程序有单独的堆栈吗?

    信号处理程序是否有单独的堆栈 就像每个线程都有单独的堆栈一样 这是在 Linux C 环境中 来自 Linux 手册页signal 7 http kernel org doc man pages online pages man7 sign
  • 找不到 assimp-vc140-mt.dll ASSIMP

    我已经从以下位置下载了 Assimp 项目http assimp sourceforge net main downloads html http assimp sourceforge net main downloads html Ass
  • 类的成员复制

    在学习 复制成员 概念时 书中给出了如下说法 此外 如果非静态成员是引用 const 或没有复制赋值的用户定义类型 则无法生成默认赋值 我不太明白这个声明到底想传达什么 或者说这个说法指的是哪一种场景 谢谢 该语句与编译器自动为您编写的类
  • 如何在 QTabWidget Qt 中展开选项卡

    我有一个QTabWidget像这个 但我想展开选项卡以 填充 整个小部件宽度 如下所示 我怎样才能做到这一点 我在用Qt 5 3 2 and Qt 创建者 3 2 1 Update 我尝试使用setExpanding功能 ui gt myT
  • 从 WebBrowser 控件 C# 获取滚动值

    我试图在 WebBrowser 控件中获取网页的 Y 滚动索引 但无法访问内置滚动条的值 有任何想法吗 对于标准模式下的 IE 使用文档类型 正如你所说 scrollTop是的财产元素 而不是 HtmlDocument htmlDoc th
  • C++ php 和静态库

    我创建了一个library a 其中包含 cpp 和 h 文件 其中包含很多类 嵌套类和方法 我想在 php 示例中包含这个静态库并尝试使用它 我想提一下 我是 php 新手 我已经在 test cpp 文件中测试了我的 libray a
  • AES 输出是否小于输入?

    我想加密一个字符串并将其嵌入到 URL 中 因此我想确保加密的输出不大于输入 AES 是可行的方法吗 不可能创建任何始终会创建比输入更小的输出的算法 但可以将任何输出反转回输入 如果您允许 不大于输入 那么基本上您只是在谈论同构算法alwa
  • 无法在内存位置找到异常源:cudaError_enum

    我正在尝试确定 Microsoft C 异常的来源 test fft exe 中 0x770ab9bc 处的第一次机会异常 Microsoft C 异常 内存位置 0x016cf234 处的 cudaError enum 我的构建环境是 I
  • 如何通过 JsonConvert.DeserializeObject 在动态 JSON 中使用 null 条件运算符

    我正在使用 Newtonsoft 反序列化已知的 JSON 对象并从中检索一些值 如果存在 关键在于对象结构可能会不断变化 因此我使用动态来遍历结构并检索值 由于对象结构不断变化 我使用 null 条件运算符来遍历 JSON 代码看起来像这
  • 每个租户的唯一用户名和电子邮件

    我正在使用以下代码编写多租户应用程序ASP NET Core 2 1 我想覆盖默认的与用户创建相关的验证机制 目前我无法创建多个具有相同的用户UserName My ApplicationUser模型有一个名为TenantID 我想要实现的
  • .NET Core 中的跨平台文件名处理

    如何处理文件名System IO以跨平台方式运行类以使其在 Windows 和 Linux 上运行 例如 我编写的代码在 Windows 上完美运行 但它不会在 Ubuntu Linux 上创建文件 var tempFilename Dat
  • 新任务中使用的依赖注入服务

    我在需要时使用依赖项注入来访问我的服务 但我现在想要创建一个并发任务 但这会由于依赖项注入对象及其生命周期而导致问题 我读过这篇文章 标题 防止多线程 Link http mehdi me ambient dbcontext in ef6
  • 如何在 DropDownList 中保留空格 - ASP.net MVC Razor 视图

    我在视图中通过以下方式绑定我的模型 问题是我的项目文本是格式化文本 单词之间有空格 如下所示 123 First 234 00 123 AnotherItem 234 00 123 Second 234 00 我想保留此项目文本中的空格 即
  • C++0x中disable_if在哪里?

    Boost 两者都有enable if and disable if 但 C 0x 似乎缺少后者 为什么它被排除在外 C 0x 中是否有元编程工具允许我构建disable if按照enable if 哦 我刚刚注意到std enable i
  • 使我的 COM 程序集调用异步

    我刚刚 赢得 了在当前工作中维护用 C 编码的遗留库的特权 这个dll 公开使用 Uniface 构建的大型遗留系统的方法 除了调用 COM 对象之外别无选择 充当此遗留系统与另一个系统的 API 之间的链接 在某些情况下 使用 WinFo

随机推荐

  • 启用对非公共 Google Cloud Function 的令牌访问

    我想部署一个没有公共访问权限的 Google Cloud Function 服务帐户应该能够以最少的权限调用该功能 由外部服务器使用 我已经创建了一个服务帐户 添加了绑定并下载了密钥 gcloud iam service accounts
  • Puppeteer 启动器错误结果未定义

    在 Windows 上测试我的项目后 我将其部署到基于 Ubuntu 的虚拟机上 这就是 Puppeteer 行为让我感到困惑的地方 我确实安装了所有必需的依赖项 但我有一种感觉 我的错误不一定是由于缺乏依赖项以及更多有关配置问题而引起的
  • PyCharm:为什么只显示退出代码行?

    例如 运行以下代码行 print Hello world My name is Enkouyami 只输出这个 Process finished with exit code 0 让它显示该文本的唯一方法是转到 python 控制台 我的
  • 在 Ubuntu 18.x 和 R 3.4.4/3.5.1 上安装 tidyverse

    我尝试安装 tidyverse 以及组成 tidyverse 的软件包 并得到以下输出 gt install packages tidyverse dependencies TRUE type source Installing packa
  • 在PHP应用程序中以安全的方式存储MYSQL的密码

    我有一个从代码连接到数据库的 php 应用程序 我想知道存储这些凭据的安全方法是什么 这是一个Linux服务器 编辑 我只想听到一些知情的意见 以便自己获得知情的意见 以便与我的团队讨论 我反对加密任何密码 但我的团队并不相信 我认为如果密
  • 使用 Autofac 进行 XUnit 测试构造函数依赖注入

    我正在使用 Autofac 实现 Xunit 我可以通过以下代码使其工作 using var scoped DbFixture Container Resolve
  • 使用批处理脚本在 Windows 中添加注册表项,并在数据中添加所需的引号

    小威利斯在这里 我正在尝试使用批处理脚本来编辑双击 jar 文件时使用的现有注册表项 问题是我尝试输入的数据包含引号 但我还需要引号才能将其视为字符串 Example reg add HKEY LOCAL MACHINE Software
  • 带有 ng-repeat 指令的容器高度为零

    我有一个带有 ng repeat 指令的 div 它会遍历一个数组并向我的容器添加一堆 div 当我打电话时 height 在现在充满 div 的容器上 它返回 0 它似乎返回 ng repeat 指令执行之前的高度 将 ng repeat
  • 如何翻转单个UIView(不翻转父视图)

    这是一个 iPad 项目 其中我有一个带有多个子视图的 UIView 我正在尝试使用 UIView transitionFromView toView duration options completion 为其中一个 UIView 制作动
  • C 和 C++ 风格文件 IO 之间的性能差异

    我一直听说 C 文件 I O 操作比 C 风格的 I O 慢得多 但我没有找到任何实际参考来说明它们实际上有多慢 所以我决定在我的机器上测试它 Ubuntu 12 04 GCC 4 6 3 ext4分区格式 首先 我在磁盘中写入了约 900
  • ActiveRecords 数组转为 JSON

    我知道 ActiveRecord 提供了一个 to json 方法 该方法允许使用 only 和 except 从 JSON 输出中过滤出字段 目前我正在使用以下命令将 find 中的数组格式化为 JSON customers Custom
  • VSCode 扩展从开发中运行,但在使用 webpack 打包时不起作用

    我已经构建 运行 打包并发布了一个扩展 但打包程序抱怨有 2509 个文件 4 28MB 并建议使用打包程序 我已按照以下说明进行操作捆绑扩展 https code visualstudio com api working with ext
  • UI 自动化和 WPF 的经验 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们正在开发一个相当大的基于 WPF 的应用程序 并希望在我们的测试套件中包含一些自动化 UI 测试 其中已经包含许多单元测试 The 用户界面
  • 如何不使用 .data() 跳过第一个元素

    The data数组恰好包含 5 个对象 以下代码仅显示最后 4 个 并跳过第一个 d3 csv csv data function error data var table d3 select div var tr table selec
  • 如何使用 JSON 格式的日期过滤数据

    我想使用日期进行过滤 但数据是 JSON 格式 如何在 JavaScript 中使用日期过滤大型数据集 Example data date 22 12 2014 name selva date 10 10 2010 name raja da
  • CakePHP 时间助手问题

    我想我可能在这里犯了一个错误 当尝试在控制器的时间助手中使用简单函数时 出现以下错误 在视图中使用相同的函数调用时 我没有收到错误 以下是来自控制器的错误 接下来是失败的控制器代码 接下来是正在运行的视图代码 任何帮助表示赞赏 Error
  • 在 flutter v2.5 中迁移强调色

    在 flutter 2 5 更新后 我的主题数据有点损坏并且不再接受accentColor 我查看了文档 发现它被 重命名 为 colorScheme secondary 但无论我如何尝试 我都无法让它为我工作 这是我当前的代码 class
  • 使用正则表达式仅从列表中提取不包含重复字母的单词

    我有一个很大的单词列表文件 每行一个单词 我想过滤掉重复字母的单词 INPUT abducts abe abeam abel abele OUTPUT abducts abe abel 我想使用正则表达式 grep 或 perl 或 pyt
  • 将 RRULE 解析为可读文本?

    我正在寻找一个库 php 或一些伪代码来将 Ical RRULE 解析为可读文本 例如谷歌日历 RRULE FREQ MONTHLY INTERVAL 1 BYDAY 1FR 3FR 5FR gt Monthly on Friday of
  • 如何处理 C++ 接口中的单元

    我目前正在设计一个 API 我希望用户能够编写如下代码 PowerMeter forceVoltage 1 mV PowerMeter settlingTime 1 ms 目前我们使用如下定义来做到这一点 define mV 1 0e 03