是否有某种方法可以将变量定义为函数,以便在某个给定时间调用该变量将 return 该函数当时的输出?

Is there some way to define a variable as a function such that calling the variable at some given time will return the function's output at that time?

本质上,我正在尝试做类似

的事情
#define foobar foo.bar()

但是没有使用#define,所以我可以按照

写一些东西
double foobar = foo.bar();

显然,编译上面的代码只会在定义时将 foobar 定义为任何 foo.bar() returns。我想要做的是在代码中的某个时间使用 foobar 的方式将只使用当时的任何 foo.bar() returns ,而不是 foobar 定义中的任何内容.

Obviously, compiling the code above will just define foobar as whatever foo.bar() returns at the time of definition. What I want to do is the above in such a way that using foobar at some time in the code will just use whatever foo.bar() returns at that time, and not whatever it was at definition of foobar.

你想要一个函数而不是一个变量:

auto foobar() { return foo.bar(); } 

如果 foo 不是全局的(我希望如此)并且您想像声明 double 一样即时声明可调用对象,您可以使用 lambda 表达式:

Foo foo;
auto foobar = [&foo](){ return foo.bar(); };

// call it:
foobar();

要在不使用函数调用语法 () 的情况下调用函数,您可以使用在转换为返回类型时调用函数的自定义类型。但是,由于这是 non-idiomatic 混淆,我不会详细介绍。