c++ - '*' token : Pointer to Member Functions 之前的预期不合格 ID

标签 c++ function pointers compiler-errors

我正在尝试运行此代码,但无法理解导致错误的原因。

#include <iostream>
using namespace std;

class Shape
{
    public:
        void show ( float ) { cout << "Hello"; }
};

int main ( )
{

    void (Shape::*FPtr2) (float) = &Shape :: show;
    (Shape::*FPtr2)(1.1);

    return 0;
}

最佳答案

调用非静态成员函数需要一个对象。通过指向成员函数的指针调用非静态成员函数也需要一个对象。

#include <iostream>
using namespace std;

class Shape
{
    public:
        void show ( float ) { cout << "Hello"; }
};

int main ( )
{
    void (Shape::*FPtr2) (float) = &Shape :: show;
    Shape myShape;  // here is my object
    (myShape.*FPtr2)(1.1);  // here is the call to the object's show function via pointer
    return 0;
}

关于c++ - '*' token : Pointer to Member Functions 之前的预期不合格 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26048053/

相关文章:

C++从带有&返回指向未初始化结构的指针的 vector 获取结构

c++ - 尝试将 boost::stacktrace 添加到 CMake 项目时生成错误

c++ - 在 C++ 中读取 OpenMP 文件

azure - 如何在服务总线队列触发函数中将服务总线消息移至死信

function - 在lua中使用全局函数更改局部变量

jquery - .each() 内的函数仅被调用一次

c - C 中的列表实现

c - 成员(member)运营商 : How to use "my_var" actual value in "my_struct->my_var"?

c++ - 数组是否被称为隐式指针

将模板化类作为参数的 C++ 方法