直接按如下定义是不行的,会报错!!!
typedef template<class T> bool (*templateFunc)(const T& t1,const T& t2); //编译不通过!!!
但是不意味着不可以以模板函数作为函数的参数!!!回顾函数指针时http://cherishlc.iteye.com/blog/1274062
发现了返回函数指针的函数可以如下声明:
int (*fff(int a))(int ,int){//从函数名开始向外读
return sub;
}
经过测试,以下函数中的可以传递函数指针的模板了~~~~~
#include <iostream>
using namespace std;
template<class T> inline bool isEqual(const T& t1,const T& t2){
return t1==t2;
}
//typedef template<class T> bool (*templateFunc)(const T& t1,const T& t2); //编译不通过!!!
//第三个参数为以T为参数的函数,不可按上述方法定义!!!但直接写就没问题
template<class T> bool isEqual2(T t1,T t2,bool (*isCompatible)(const T&,const T&)=isEqual<T>){
return isCompatible(t1,t2);
}
void main(){
bool (*isIntEqual)(int,int);
//isIntEqual=isEqual2<int>; //不行,真悲催
bool not=isEqual2<int>(1,2);
bool yes=isEqual2<double>(1.0,1.0);
cout<<"1==2? "<<not<<"\n1.0==1.0? "<<yes<<endl;
}
另外转载两个其他的方法:
1、http://topic.csdn.net/u/20120418/00/64c2d59b-151b-450e-a7aa-39ff6bf941a5.html?seed=380167928&r=78289909
template <typename PktType>
struct Wrapper
{
typedef int (* CallbackFunPtrType) (const PktType& CurPkt);
};
这样不就行了
用的时候就
Wrapper<int>::CallbackFunPtrType callback=....
2、C++中用模板函数指针实现委托http://tangfeng.iteye.com/blog/602680
分享到:
相关推荐
在C++编程中,函数指针是一个非常重要的概念,它允许我们存储函数的地址并可以在之后的代码中调用。这种技术在很多场景下都非常有用,例如回调函数、事件处理或者设计模式中的策略模式等。下面我们将深入探讨普通...
在C++编程中,函数指针是一个非常强大的工具,它允许我们将函数作为其他函数的参数或者存储在变量中。在本示例中,“函数指针万能打印”着重讲解如何利用函数指针实现一个通用的打印系统,可以适应各种数据类型的...
在实际编程中,理解函数指针的这些概念至关重要,因为它们是许多高级C++技术的基础,如回调、事件处理和模板元编程。`函数指针.cpp`、`StdAfx.cpp`、`函数指针.dsp`、`函数指针.dsw`和`StdAfx.h`等文件可能包含示例...
C++中的成员函数指针是一种特殊的指针类型,它可以指向类的成员函数。在C++中,函数本身不是对象,因此不能直接赋值给普通指针。但是,成员函数指针允许我们存储对特定对象成员函数的引用,以便稍后调用。这种机制在...
文档可能还会涵盖一些高级主题,如回调函数、函数指针数组、以及与C++模板和STL容器的结合使用。 总之,理解和掌握函数指针和指针函数对于提升C/C++编程技能至关重要,它们能让你编写出更高效、更灵活的代码,应对...
### 成员函数指针与高性能的C++委托 在C++中实现类似C#或Java等面向对象语言中的委托功能是一项挑战但也极具价值的技术实践。本文将深入探讨如何利用成员函数指针来创建高效的C++委托,并分析其背后的原理和技术...
《C、C++函数辞典》是一份宝贵的编程资源,主要涵盖了C和C++两种编程语言中的函数使用和解释。这份CHM( Compiled HTML Help)文件是程序员在学习和工作中查询函数用法的重要参考工具。下面,我们将深入探讨C和C++...
- 宏和模板元编程:函数指针可以与宏和模板元编程结合,生成更复杂的代码结构。 总结,C++中的函数指针和回调函数是强大的工具,它们提供了对程序流程的动态控制和高度的灵活性。理解和熟练掌握这些概念对于编写...
在C++中,函数指针同样可以使用,但多被重载函数、虚函数和模板函数等机制所覆盖。 函数指针的一个典型应用就是实现事件驱动编程,比如在图形用户界面(GUI)编程中。在这种情况下,将函数指针赋值给控件的事件处理...
函数指针的使用,主要用到typedef,其实现功能跟模板类差不多
2. **纯C接口**:C++函数需要提供一个不依赖于C++特性的接口,这意味着不能使用C++特有的类型(如类、模板)和特性。可以定义一个C风格的函数原型,然后在C++代码中实现它。 3. **链接器支持**:确保C和C++编译器...
当一个类声明了虚函数,编译器就会为这个类生成一张虚函数表,其中包含了该类及其继承类的所有虚函数指针。对象实例在内存中会包含一个指向虚函数表的指针,使得通过基类指针调用虚函数时,能够动态绑定到正确的派生...
同时,需要注意的是,由于C++支持模板和STL,现代C++倾向于使用函数对象(functors)和lambda表达式来代替原始的函数指针,因为它们提供了更强的类型安全性和更简洁的语法。不过,理解函数指针和回调函数的基础对于...
在C++编程语言中,函数指针和模板是两个非常重要的概念,它们分别提供了不同的功能增强和代码复用机制。让我们深入探讨这两个主题,并通过源码分析来理解它们的应用。 首先,函数指针允许我们将函数作为其他函数的...
学习 C++ 的函数模板和类模板 在 C++ 编程语言中,模板(Template)是一种非常重要的概念。它可以帮助我们编写更加灵活和可重用的代码。今天,我们将学习 C++ 的函数模板和类模板。 一、为什么使用模板? 在算法...
本篇将深入探讨C++函数的各个方面,包括定义、调用、参数传递、返回值、重载以及函数模板等关键知识点。 一、函数定义与声明 1. 函数定义:定义函数包括指定函数名、返回类型(如果有的话)以及参数列表。例如,一...
在这个"几个关于C++函数实例"的压缩包中,我们可能会看到一些典型的C++函数用法,帮助初学者深入理解和掌握函数在实际编程中的应用。 首先,C++中的函数可以分为两类:内置(或库)函数和自定义函数。内置函数是由...
这里,我们聚焦于"20道C++函数编程习题及其详细程序解答",这些习题旨在帮助学习者深入理解C++中的函数使用、参数传递、返回值以及函数模板等核心概念。 1. **函数定义与调用**:基础的函数定义包含函数名、返回...
在这些文档中,你可能会找到关于C++内存管理、对象生命周期、模板、STL容器(如vector、list、map)的使用、智能指针(`std::unique_ptr`、`std::shared_ptr`)、多态、继承、封装等更多主题的深入讨论。每个主题都...
本主题聚焦于"C C++标准函数库和模板库",这对于初学者来说是至关重要的知识领域。标准函数库(也称为C库)和模板库(主要是C++ STL)提供了大量的预定义函数和数据结构,极大地简化了编程工作,提高了代码的可读性...