簡體   English   中英

需要有關函數別名的幫助

[英]Need help regarding alias for a function

因此,我正在使用c ++進行賦值,在該賦值中,我們被告知對函數使用別名,或者至少對函數指針使用別名(據我所知)。 這不是“課程提綱”(我們需要學習的內容,不知道這是否是正確的單詞),因此尚未進行講授。

為了更清楚地了解任務,我有一個“車輛”類,其中包含函數draw()來更新車輛的速度並將其繪制到屏幕上。 然后,我們被告知使用函數指針將draw()的輸入部分移至單獨的函數。 這個單獨的函數應該是類的私有成員,並在構造函數中初始化。 然后,我們被告知使用此“別名”使代碼更易於閱讀:

using drivingAlgorithm = std::pair<double,double> ( PhysicsState ps,
const std::vector<std::pair<double,double>>& goals,
int currentGoal);

這應該放在另一個.h文件中,在該文件中還定義了PhysicsState結構。 我的問題是,如何使用此“別名”? 更具體地說,在哪里定義使用別名的函數的實際主體? 我似乎無法在我們的教科書中找到答案,也無法通過搜索Google找到答案。

我認為您可能輸錯了。 這里沒有什么復雜的。 也許簡短的示例會有所幫助。

include <vector>
#include <utility>

class PhysicsState
{
};

using drivingAlgorithm = std::pair<double, double>(PhysicsState ps,
    const std::vector<std::pair<double, double>>& goals,
    int currentGoal);

class Vehicle
{
public:
    Vehicle(drivingAlgorithm da) : _da(da) {}
private:
    drivingAlgorithm _da;
};

std::pair<double, double> my_algorithm(PhysicsState ps,
    const std::vector<std::pair<double, double>>& goals,
    int currentGoal)
{
    return std::make_pair(0.0, 0.0);
}

int main()
{
    Vehicle v(my_algorithm);
}

using x = ...只是建立類型別名 ,而不是函數別名(這樣的事情不存在)。 在這種情況下,類型是函數類型。 但是無論如何,您都可以像使用其他類型一樣使用類型別名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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