gpt4 book ai didi

c++ - 仿函数调用(附加字符)

转载 作者:太空狗 更新时间:2023-10-29 23:31:18 26 4
gpt4 key购买 nike

我尝试构建一个最小的示例:

struct Functor
{
void operator()(int& a)
{
a += 1;
}
void other(int& a)
{
a += 2;
}
};

template <typename foo>
class Class
{
public:
void function()
{
int a = 10;
foo()(a);
std::cout << a << std::endl;
}
};

int main()
{
Class<Functor> c;
c.function();
}

我的问题是:为什么甚至可以在没有对象的情况下调用纯类型的运算符?如何以与调用 operator() 相同的方式调用函数 other

最佳答案

您不是在纯类型上调用它。 foo() 调用构造函数,并评估为一个临时的 foo 对象,然后您可以在该对象上调用 operator()

要用“普通”成员函数做同样的事情,只需做:

foo().other(a);

关于c++ - 仿函数调用(附加字符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6198702/

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