簡體   English   中英

返回指向函數的指針的 C++ 函數

[英]C++ function that returns pointer to a function

函數 add 存在,需要 4 個參數。 前 3 個參數是對 const int 的引用,第四個參數是 bool。 該函數返回 int 的指針。

函數 make_add_to 接受 3 個參數。 第一個是指向與 Add 函數結構相同的函數的指針,第二個參數是對 const int 的引用,第三個是 bool。 此函數返回一個指向函數的指針,該函數引用 const int 並返回 int 的指針。

add_to 是一個指向函數的指針,它是從函數 make_add_to 返回的

有人能完成這個嗎? 我不確定 make_add_to 是否正確

#include <iostream>


using namespace std;


int * add(const int &x1, const int &x2, const int &x3, bool y);
int * (*make_add_to(const int &x5))(int *(*f)(const int &x1, const int &x2, const int &x3, bool y),const int &x4, bool y);

int main()
{
    int x=3,y=2,z=1;
    //cout << *dodaj(x,y,z,true);
    int *(*ptr)(const int &x1, const int &x2, const int &x3, bool y) = &add;
    //cout << *ptr(x,y,z,true);
    // (*dodaj_do)

}

int * add(const int &x1, const int &x2, const int &x3, bool y)
{
    int * re = new int;
    int x = x1+x2+x3;
    re = &x;
    return re;
}

這應該有效:

#include <iostream>


using namespace std;


int* add(const int &x1, const int &x2, const int &x3, bool y);
int* (*make_add_to(int*(const int&, const int&, const int&, bool),const int &x4, bool y))(const int&);

int main()
{
    int x=3,y=2,z=1;
    auto res_add = add(x,y,z,true);
    cout << *res_add;
    int* (*ptr)(const int &x1, const int &x2, const int &x3, bool y) = &add;
    auto res_add_ptr = ptr(x,y,z,true);
    cout << *res_add_ptr;
    /* might leak memory before reaching here */
    delete res_add; 
    delete res_add_ptr;

}

int * add(const int &x1, const int &x2, const int &x3, bool y)
{
    int *re = new int{0};
    *re += x1+x2+x3;
    return re;
}

但你應該使用這樣的東西

#include <iostream>
#include <memory>


std::unique_ptr<int> add(const int &x1, const int &x2, const int &x3, bool y);

auto make_add_to(std::unique_ptr<int>(const int&, const int&, const int&, bool),const int &x4, bool y);

int main()
{
    int x=3,y=2,z=1;
    std::cout << *add(x,y,z,true);
    auto ptr = &add;
    std::cout << *ptr(x,y,z,true);

}

std::unique_ptr<int> add(const int &x1, const int &x2, const int &x3, bool y)
{
    auto re = std::make_unique<int>(0);
    *re += x1+x2+x3;
    return re;
}

功能

int * (*make_add_to(const int &x5))(int *(*f)(const int &x1, const int &x2, const int &x3, bool y),const int &x4, bool y);   

沒有使用,也沒有
make_add_to 接受 3 個參數第一個是指向與 Add 函數結構相同的函數的指針,第二個參數是對 const int 的引用,第三個是 bool。 此函數返回一個指向函數的指針,該函數引用 const int 並返回指向 int 的指針

它是一個指向函數的指針,它帶有 3 個參數......
並提出問題而不是命令我們完成某事

暫無
暫無

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

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