从struct指针调用重载的operator函数

llk*_*llk 3 c++ class operator-overloading

我在C++中有以下结构

struct Jam
{
    void operator()()
    {
        cout << "Test";
    }
};
Run Code Online (Sandbox Code Playgroud)

我可以像这样调用重载函数:

Jam j;
j();
Run Code Online (Sandbox Code Playgroud)

但我想知道从指向同一结构的指针调用函数的正确方法是什么.例如,如果我有:

Jam *j = new Jam;
j->();
Run Code Online (Sandbox Code Playgroud)

我收到错误告诉我它需要一个函数名称.这可能吗?谢谢!

Jos*_*eld 10

最简单和最清晰的方法是取消引用指针:

(*j)();
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用->函数名称的语法(即operator()):

j->operator()();
Run Code Online (Sandbox Code Playgroud)