簡體   English   中英

需要幫助將字符串插入函數

[英]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 )

告訴編譯器motornamestd::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);
}

這樣就提供了一個可以spinmotor ,而不是一個最多只能std::rotatestring

另一種使用名稱的方法是使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM