c++ - 在定义 ClassName 之前采用参数 ClassName * 的 typedef 函数指针?

标签 c++ syntax g++ function-pointers typedef

我有以下情况:

typedef void (*F_POINTER)(ClassName*);

class ClassName {
    public:
        F_POINTER f;
}

发生这种情况是因为 ClassName 的实例需要将指针本身传递给客户端。但是,如果我按这个顺序写东西,我会提示没有声明 ClassName,诸如此类。但是,如果我调换它们,当我在类中声明实例时,我会提示 F_POINTER 没有被声明。

所以也许我在这里遗漏了一些简单的东西,但我该如何完成呢?

最佳答案

前向声明:

class ClassName;

typedef (*F_POINTER)(ClassName*);

class ClassName {
    public:
        F_POINTER f;
}

或更短:

typedef (*F_POINTER)(class ClassName*); // implicit declaration;

关于c++ - 在定义 ClassName 之前采用参数 ClassName * 的 typedef 函数指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6543313/

相关文章:

php - <?php 和 <?

c++ - Simple Protocol Buffers 程序在使用 g++ 而不是 clang++ 编译时工作

C++ - 方法/成员访问

C++ 如何将输入值分配给 std::bitset 参数?

actionscript-3 - 成员变量/方法/getter 和 setter 可以包含在一个通用的访问修饰符中吗?

c++ - 我不明白的模板方法中的语法错误

c++ - 不能内联函数定义之前的调用?

c++ - 声明指向模板函数的指针数组会产生编译错误

c++ - 如何使用类型特征正确推导出引用参数

c++ - 什么时候使用虚拟析构函数?