函数指针的问题
全局定义:
typedef LRESULT(CALLBACK* MyProc)(DWORD, DWORD);
class MyClass
{
public:
void Do()
{
MyProc p1 = Proc;
MyProc p2 = MyClass::Proc;
MyProc p3 = &MyClass::Proc;
typedef LRESULT (CALLBACK MyClass::*TMP)(DWORD, DWORD);
TMP p4 = &MyClass::Proc;
TMP p5 = this->Proc;
TMP p6 = &Proc;
p4(0, 0);
}
LRESULT CALLBACK Proc(DWORD, DWORD)
{
return 0;
}
}
在以上代码中,DO函数的6个变量只有p4能编译通过,但调用p4(0,0)失败。
typedef LRESULT(CALLBACK* MyProc)(DWORD, DWORD);
class MyClass
{
public:
void Do()
{
MyProc p1 = Proc;
MyProc p2 = MyClass::Proc;
MyProc p3 = &MyClass::Proc;
typedef LRESULT (CALLBACK MyClass::*TMP)(DWORD, DWORD);
TMP p4 = &MyClass::Proc;
TMP p5 = this->Proc;
TMP p6 = &Proc;
p4(0, 0);
}
LRESULT CALLBACK Proc(DWORD, DWORD)
{
return 0;
}
}
在以上代码中,DO函数的6个变量只有p4能编译通过,但调用p4(0,0)失败。
...全文
相关推荐
关于在 C 语言结构体中使用函数指针的问题
在C语言中,结构体是一种强大的自定义数据类型,它能够组合不同类型的数据形成数据集合,类似于C++中的类。然而,标准的C语言规范并不允许直接在结构体成员中定义函数。为了解决这一限制,文章探讨了如何利用函
[Python从零到壹] 三.语法基础之文件操作、CSV文件读写及面向对象
欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希望对您有所帮助,文章中不足之处也请海涵。第三篇文章将讲解语法基础知识,包括文件操作、CSV文件读写及面向对象。
贴子中的函数指针无法编译的例子的附件
在本案例中,"贴子中的函数指针无法编译的例子"揭示了一个常见的编程问题,即在使用函数指针时遇到了编译错误。这个问题可能涉及到多种因素,包括类型不匹配、未定义的函数引用、不正确的函数指针声明或使用等。
函数指针和函数指针数组的使用
三、函数指针和函数指针数组的使用在实际编程中,函数指针和函数指针数组可以解决多种情况问题。
C++中的函数指针与函数对象的总结
- **类型安全**:函数对象是类的实例,可以有特定的类型,避免了类型转换的潜在问题。- **扩展性**:可以添加额外的状态或功能,如保持状态、记录日志等。


