c++ - 需要帮助将字符串插入函数
问题描述
我希望让重复编程变得更容易一些。该程序根据制造商程序指南告诉电机旋转。当前代码将声明:
motorname.spin(originallib::directionType::fwd, speed, originallib::velocityUnits::pct);
我想能够说:
int main()
{
run(LeftFront,80);
run(RightFront,80);
}
void run(string motorname, double speed )
{
motorname.spin(originallib::directionType::fwd, speed, originallib::velocityUnits::pct);
}
LeftFront 和 RightFront 已在之前的头文件中声明为
originallib::motor LeftFront=originallib::motor(originallib::PORT2,
originallib::gearSetting::ratio18_1,
true);
我遇到的问题是:
“错误:‘std::basic_string’中没有名为‘spin’的成员”
因为motorname.spin
..... 是 originallib 的一部分
我怎样才能实现这一目标?
解决方案
void run(string motorname, double speed )
告诉编译器这motorname
是一个std::string
. std::string
没有spin
办法。基于
run(LeftFront,80);
哪里LeftFront
是 a originallib::motor
,假设originallib::motor
确实有一个spin
方法,你真的是看起来像的函数
void run(originallib::motor & motor,
double speed)
{
motor.spin(originallib::directionType::fwd,
speed,
originallib::velocityUnits::pct);
}
以便提供一个motor
that canspin
而不是一个string
that can 充其量std::rotate
使用名称的另一种方法是使用string
->motor
键值对的映射,您可以在映射中查找电机名称并接收映射 motor
的 ,您可以在其上调用spin
。这似乎不是一个理想的情况。
边注:
你不想
originallib::motor LeftFront=originallib::motor(originallib::PORT2,
originallib::gearSetting::ratio18_1,
true);
在标题中。如果多个翻译单元包含标题,这会对单一定义规则造成严重破坏,因为每个包含翻译单元都有自己的、同样有效的. 包含守卫不会阻止这种情况,因为包含守卫只能防止标头在一个翻译单元中多次包含。LeftFront
推荐阅读
- flutter - Flutter 更改自定义 AppBar 高度
- visual-studio - 如何撤消 Visual Studio 2019 中的“从项目中排除”?
- python - 当我使用 roles_required 装饰器时,为什么 SECURITY_UNAUTHORIZED_VIEW 配置选项不重定向我?
- batch-file - 在批处理文件中使用 SET
- html - 对齐网格底部的按钮
- kubernetes - 如何将文件内容传递给 Helm values.yaml
- django - 用于传递 securityheaders.com 的 Django Cookie 前缀
- django - 如何正确使用 django-cms apphooks
- python - 创建一个scrapy蜘蛛。NameError:名称“自我”未定义
- ruby - 什么是 Ruby 的 bsearch find-minimum 和 find-any 行为?