簡體   English   中英

如何將 lambda function 的返回傳遞給 ZF6F87C9FDCF8B71C3F14Z 中的另一個 function?

[英]How can I pass the return of a lambda function to another function in C++?

我有一個外部 function 定義為extern "C" int64_t ASMFunction(int64_t sort);

然后我有一個 C++ function 定義如下:

template <typename T>
void results(T&& sort) {
    ASMFunction([&](int64_t sort[60]) {for (int i = 0; i < sizeof(sort); i++) {
        sort[i] = rand() % 9223372036854775807;
    };
    return sort; }
    );
}

我在模板下定義它的原因是因為否則我得到編譯器錯誤no suitable conversion function from "lambda []int64_t *(int64_t *sort)->int64_t *" to "int64_t" exists 否則,我什至沒有單獨的 function 來調用我的外部 ASMFunction,而只是在 main() 中執行此操作。 這樣,我得到編譯器錯誤Error C2664 'int64_t ASMFunction(int64_t)': cannot convert argument 1 from 'main::<lambda_2b1e6f6fde7359a6cb4cb68639dfae02>' to 'int64_t' 如何使用 C++ Lambda function 生成一個隨機整數數組作為另一個 ZC1C42145AB68E683984F 的參數?

您正在嘗試生成一個數字列表,但您的ASMFunction只得到一個。

如果你想要一個列表,你可以這樣做:

int64_t ASMFunction(int64_t * sort)
{
    std::cout << "Num: " << sort[1] << endl;
    return 0;
}

template <typename T, const int64_t N>
void results(T (&sort)[N]) {
    ASMFunction([&]() {for (int64_t i = 0; i < N; i++) {
                sort[i] = rand() % 9223372036854775807;
            };
            return sort;
                }()  // <- note you are calling the function to generate the list
        );
}

int main() {
    int64_t i[10];
    
    results(i);
    
    return 0;
}

如果您只想要一個號碼:

int64_t ASMFunction(int64_t sort)
{
    std::cout << "Num: " << sort << endl;
    return 0;
}

template <typename T, const int64_t N>
void results(T (&sort)[N]) {
    ASMFunction([&]() { return rand() % 9223372036854775807; }() );
}

int main() {
    int64_t i[10];
    
    results(i);
    
    return 0;
}

typename T是類型,在這種情況下是int64_tconst int64_t N是能夠讓模板推導出數組大小。 每個數組大小都會有一個新的模板實例。

暫無
暫無

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

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