我试着构建一个最小的例子:
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();
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:为什么甚至可以在没有对象的情况下调用纯类型的运算符?如何other以与调用相同的方式调用函数operator()?
你不是在纯粹的类型上调用它. foo()调用构造函数,并计算一个临时foo对象,然后在该对象上调用operator().
要使用"普通"成员函数执行等效操作,只需执行以下操作:
foo().other(a);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
133 次 |
| 最近记录: |