全局和局部范围内函数指针的定义和赋值

发布于 2024-11-06 23:54:56 字数 593 浏览 3 评论 0原文

我希望这是一个简短的问题。我想知道为什么下面注释掉的行在放置在全局级别时会导致错误,而在放置在主函数内时却可以正常工作?

非常感谢

#include <iostream>
using namespace std;
bool compare(const int &v1, const int &v2)  {
    if (v1 < v2) { 
        return true;
    } else {
        return false;
    }
}


bool (*pf5)(const int &v1, const int &v2);
//pf5 = compare;


int main() {
    int v1 = 5;
    int v2 = 6;
    pf5 = compare;

    bool YesNo1 = compare(v1, v2);
    cout << YesNo1 << endl;
    bool YesNo3 =pf5(v1, v2);
    cout << YesNo3 << endl;

    return 1;
}

A quick question I hope. I would like to know why the line commented out below causes an error when placed at the global level while it works fine when placed inside the main function?

Many Thanks

#include <iostream>
using namespace std;
bool compare(const int &v1, const int &v2)  {
    if (v1 < v2) { 
        return true;
    } else {
        return false;
    }
}


bool (*pf5)(const int &v1, const int &v2);
//pf5 = compare;


int main() {
    int v1 = 5;
    int v2 = 6;
    pf5 = compare;

    bool YesNo1 = compare(v1, v2);
    cout << YesNo1 << endl;
    bool YesNo3 =pf5(v1, v2);
    cout << YesNo3 << endl;

    return 1;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

终止放荡 2024-11-13 23:54:56

除了内部函数之外,您无法执行分配。但是您可以执行初始化:

bool (*pf5)(const int &v1, const int &v2) = compare;

You can't perform assignments except inside functions. You can however perform initialisations:

bool (*pf5)(const int &v1, const int &v2) = compare;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文