A template class that has a function for specific type

So you have a C++ template class, but you want to specifiy a member function for a particular type of data:

 1 // A template class called Image:
 2 template <class T>
 3 class Image {
 4 public:
 5   // ========================
 6   // CONSTRUCTOR & DESTRUCTOR
 7   Image() : width(0), height(0), data(NULL) {}
 8   Image(const Image &image) : data(NULL) {
 9     copy_helper(image); }
10   const Image& operator=(const Image &image) {
11     if (this != &image)
12       copy_helper(image);
13     return *this; }
14   ~Image() {
15     delete [] data;
16   }
17   bool Load(const std::string &filename);
18 };
19
20 // But you want to specify a function for a particular type:
21 template <> // notice this is an empty arrow bracket
22 bool Image<Offset>::Load(const std::string &filename) { // Offset is a class, you can specify Offset so you don‘t put a T in the arrow bracket
23  ... // sth here
24 }
时间: 2024-10-13 12:53:42

A template class that has a function for specific type的相关文章

implicitly declaring library function &#39;objc_msgSend&#39;with type &#39;(id,SEL,...)&#39; 警告

之前一直用objc_msgSend,但是没注意apple的文档提示,所以突然objc_msgSend crash了. 之前32位的时候没问题,然后转换为64位之后就会发生EXC_BAD_ACCESS问题. 当然apple再文档([64-Bit Transition Guide for Cocoa Touch中有](https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/CocoaTou

implicitly declaring function &#39;malloc&#39; with type void *(unsigned long ) 错误 解决

errror :   implicitly declaring function 'malloc' with type void *(unsigned long ) Be sure to include the correct header file. #include <stdlib.h> Casting the return is allowed but frowned upon in C as being unnecessary. double* sequence = malloc(..

c/c++:回调函数

1:函数名为指针 首先,在C语言中函数是一种function-to-pointer的方式,即对于一个函数,会将其自动转换成指针的类型.如: 1 #include<stdio.h> 2 3 void fun() 4 { 5 } 6 7 int main() 8 { 9 printf("%p %p %p\n", &fun, fun, *fun); 10 return 0; 11 } 这三个值的结果是一样的. 其实对于最后的那个*fun, 即使前面加上很多个*号, 其结果

C#中的泛型 【转】

C#中的泛型 泛型(generic)是C#语言2.0和通用语言运行时(CLR)的一个新特性.泛型为.NET框架引入了类型参数(type parameters)的概念.类型参数使得设计类和方法时,不必确定一个或多个具体参数,其的具体参数可延迟到客户代码中声明.实现.这意味着使用泛型的类型参数T,写一个类MyList<T>,客户代码可以这样调用:MyList<int>, MyList<string>或 MyList<MyClass>.这避免了运行时类型转换或装箱

Meandering Through the Maze of MFC Message and Command Routing

Meandering Through the Maze of MFC Message and Command Routing Paul DiLascia Paul DiLascia is a freelance software consultant specializing in developing C++ applications for Windows. He is the author of Windows++: Writing Reusable Code in C++ (Addiso

C# Generic(转载)

型(generic)是C#语言2.0和通用语言运行时(CLR)的一个新特性.泛型为.NET框架引入了类型参数(type parameters)的概念.类型参数使得设计类和方法时,不必确定一个或多个具体参数,其的具体参数可延迟到客户代码中声明.实现.这意味着使用泛型的类型参数T,写一个类MyList<T>,客户代码可以这样调用:MyList<int>, MyList<string>或 MyList<MyClass>.这避免了运行时类型转换或装箱操作的代价和风险

转载 泛型

泛型(generic)是C#语言2.0和通用语言运行时(CLR)的一个新特性.泛型为.NET框架引入了类型参数(type parameters)的概念.类型参数使得设计类和方法时,不必确定一个或多个具体参数,其的具体参数可延迟到客户代码中声明.实现.这意味着使用泛型的类型参数T,写一个类MyList<T>,客户代码可以这样调用:MyList<int>, MyList<string>或 MyList<MyClass>.这避免了运行时类型转换或装箱操作的代价和风

C++回调机制实现 signal-slot

什么是回调?通常发生在需要两个角色即调用者与实现者的情形上,即我们希望当产生某个事件时,调用实现者定义的某个函数.当然这个概念很大,不是说操作系统的信号量,条件变量什么的,是在语言级别实现,如一个Framework提供商,规定了整个程序的框架,可能产生某事件时它希望调用某个行为,而这个行为的具体定义是由framework客户来完成. 我们从简单的做起,通过一个个为什么最终来获得一个比较好的回调实现. C语言中用全局函数实现回调最简单了: void callback(int a){    cout

C#—泛型_推迟一切可以推迟的东西

泛型(generic)是C#语言2.0和通用语言运行时(CLR)的一个新特性.泛型为.NET框架引入了类型参数(type parameters)的概念.类型参数使得设计类和方法时,不必确定一个或多个具体参数,其的具体参数可延迟到客户代码中声明.实现.这意味着使用泛型的类型参数T,写一个类MyList<T>,客户代码可以这样调用:MyList<int>, MyList<string>或 MyList<MyClass>.这避免了运行时类型转换或装箱操作的代价和风