[英]Need help inserting a string into a function
我希望以后可以更輕松地進行重復編程。 該程序根據制造商的程序指南告訴電機旋轉。 當前代碼將說明:
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
是一個originallib::motor
,並且假設originallib::motor
確實有一個spin
方法,你的功能真的看起來像
void run(originallib::motor & motor,
double speed)
{
motor.spin(originallib::directionType::fwd,
speed,
originallib::velocityUnits::pct);
}
這樣就提供了一個可以spin
的motor
,而不是一個最多只能std::rotate
的string
另一種使用名稱的方法是使用string
-> motor
鍵值對的映射,您可以在映射中查找電機名稱並接收映射的motor
,您可以在其上調用spin
。 這在這里似乎不是一個理想的情況。
你不想
originallib::motor LeftFront=originallib::motor(originallib::PORT2,
originallib::gearSetting::ratio18_1,
true);
在標題中。 如果多個翻譯單元包含標題,則這會對單一定義規則造成嚴重破壞,因為每個包含的翻譯單元都有自己的、同樣有效的LeftFront
。 包含保護不會阻止這一點,因為包含保護只能防止一個標題在一個翻譯單元中被多次包含。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.