gpt4 book ai didi

C++ 将方法和字段带入外部范围,无需显式引用

转载 作者:太空宇宙 更新时间:2023-11-04 12:35:03 25 4
gpt4 key购买 nike

我想要一种类似于闭包隐式执行的行为,将变量引入作用域,而不必显式声明引用

示例结构

struct A{
T x;
void g();
};

行为效果,真实但不受欢迎的语法

void f(){
A a;
T& x= a.x;
void(A::*g)()= &A::g; //method pointer; obvious why this is undesirable
//...
};

所需的、不受支持的语法

void f(){
A a;
using a;
//invalid/unsupported use of keyword
}
void f(){
A a;
[&a]{
//...
//lambdas only bring members into scope for keyword this
}();
}

最佳答案

这不是一个令人满意且对读者友好的解决方案。显式声明引用比这样做要好得多。
然而,它只需要将变量明确地引入范围一次。
wrangler 的方法充当作用域 block 。

struct wrangler{
T& a;
void(A::*g)()= &A::g;
void f(){
//...
}
}

关于C++ 将方法和字段带入外部范围,无需显式引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56796535/

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