使用宏访问功能
Function access using macros
当我想在符号之后获得宏中的功能地址( ::
(时引起此问题。
我在Mac OS Mojave i386中使用G 。
例如,我有课:
struct A{
void b();
};
和一个宏:
#define ACC(name) &A::name
我用它来获取A::b
的指针:
void(*accab)() = ACC(b);
,我会得到这样的错误:
error: cannot initialize a variable of type 'void (*)()' with an rvalue of type 'void (A::*)()'
之后,我尝试放一个支架,但我得到了:
error: call to non-static member function without an object argument
有什么方法可以解决问题,以便可以通过宏来获取指针?
函数指针的类型与指针的类型与成员函数的类型不同。
通常,指向任何成员的指针的类型与普通指针的类型不同。
要使这项工作您将已将accab
声明为指向成员的指针:
void(A::* accab)() = ACC(b);
C 标准有一个关于以下内容的注释:
类型的"指向成员指针"与"指针"类型不同,也就是说,向成员的指针仅由指向成员声明语法的指针声明,而从未由指针声明器语法。
。
相关文章:
- 如何从其他功能C++访问参数?
- 如何使用 MPI 的远程内存访问 (RMA) 功能并行化数据聚合?
- 访问我以前可以访问的功能时出现分段错误
- 好友功能 - 成员无法访问
- 如何启用友元类的友元功能直接在C++中访问其私有成员
- 无法从好友功能访问类的私有成员?"ostream"不是"std"的成员?
- 无法访问公共功能? 没有指定成员?
- 好友功能仍无法访问私人会员
- 我无法获得好友会员功能以实际访问私人会员
- GPU设备函数如何访问主机功能中定义的对象
- 派生类中的成员字段别名(无访问器功能)
- 从C文件访问C 类成员功能
- 访问嵌套结构的数据成员并将结构传递到功能C
- 尝试在 qt 中建立访问器功能
- (C )创建可以从功能访问的动态全局数组/向量
- 无法从类中的其他功能访问同一类的变量
- 防止朋友功能访问班级的私人会员
- 使用类成员功能访问私有结构
- 成员无法使用好友功能访问
- 无法从其他类的功能访问对象的参数