gpt4 book ai didi

c++ - 为静态成员函数使用别名?

转载 作者:太空狗 更新时间:2023-10-29 20:39:12 26 4
gpt4 key购买 nike

有没有办法在 C++ 中为静态成员函数起别名?我希望能够将它拉入范围,这样我就不需要完全限定名称。

本质上是这样的:

struct Foo {
static void bar() {}
};

using baz = Foo::bar; //Does not compile

void test() { baz(); } //Goal is that this should compile

我的第一个想法是使用 std::bind(如 auto baz = std::bind(Foo::bar);)或函数指针(如在 auto baz = Foo::bar;) 中,但这并不令人满意,因为对于我希望能够使用别名的每个函数,我需要为该函数创建一个单独的变量,或者而是让别名变量在全局/静态范围内可用。

最佳答案

using 在这里不是正确的工具。只需使用 auto baz = &Foo::bar 声明您的别名(如果需要,则为全局别名)。

正如评论中所建议的,您还可以将其设置为constexpr,以便在可能的情况下在编译时以常量表达式的形式提供它。

struct Foo {
static void bar() { std::cout << "bar\n"; }
};

constexpr auto baz = &Foo::bar;

void test() { baz(); }

int main()
{
test();
}

Demo

关于c++ - 为静态成员函数使用别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28575700/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com