簡體   English   中英

C ++語法:使用typedef進行類型轉換

[英]C++ syntax: Using a typedef to typecast

我正在查看這段代碼,並且遇到語法問題:

struct Instance
{
    typedef glm::vec3(*OffsetFunc)(float);

    OffsetFunc CalcOffset;

    glm::mat4 ConstructMatrix(float fElapsedTime)
    {
        glm::mat4 theMat(1.0f);

        theMat[3] = glm::vec4(CalcOffset(fElapsedTime), 1.0f);

        return theMat;
    }
};

它是與OpenGL相關的C ++代碼,但我的問題不是關於OpenGL。 glm::vec3, vec4, mat4只是3和4維的向量,mat4是4x4方陣。 glm庫重載了運算符,如下所示:

theMat[3] = glm::vec4(CalcOffset(fElapsedTime), 1.0f);

按照你的預期工作,用一個由1.0f和cast或typedef或函數調用組成的4-d向量填充theMat的第4列,我不確定那是什么,這是我的問題。

什么typedef glm::vec3(*OffsetFunc)(float); CalcOffset(fElapsedTime)是什么意思?

我試着在這里閱讀: http//en.wikipedia.org/wiki/Typedef#Using_typedef_with_type_casts ,但這個解釋對我來說似乎沒有意義。

編輯:我知道typedef只是涉及為類型提供另一個別名時如何工作。

編輯2:我認為這可能是用指向函數的指針做的事情,因為它看起來像一個指針,並且像它的函數參數類型一樣float ,看起來就是這樣,但我仍然不確定這種代碼究竟是做什么的。

typedef glm::vec3(*OffsetFunc)(float);

OffsetFunc定義為glm::vec3(*)(float)類型的別名,即指向函數的指針,該函數采用float並返回glm::vec3

CalcOffset(fElapsedTime)

CalcOffsetfElapsedTime指向的函數。

沒有演員。 它是函數指針的typedef。

OffsetFunc類型是一個指向函數的指針,該函數將float作為參數並返回glm::vec3

typedef glm::vec3(*OffsetFunc)(float);

是C(和C ++)語法中較為模糊的部分之一。

它說新類型OffsetFunc是一個指向函數的指針,該函數接受一個參數float,並返回一個glm::vec3

CalcOffset(fElapsedTime)

是通過這樣的函數指針調用函數:必須在調用它之前設置函數指針以指向合適的函數。

typedef glm::vec3(*OffsetFunc)(float);

創建函數指針的typedef。 該函數返回glm::vec3並采用float參數。

CalcOffset(fElapsedTime)

這是使用參數fElapsedTime調用CalcOffset指向的函數。

暫無
暫無

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

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