定义一个类模板
时间: 2023-07-10 07:11:18 浏览: 56
以下是一个简单的类模板定义示例:
```c++
template<typename T>
class MyTemplate {
public:
MyTemplate(T data) : mData(data) {}
T getData() const { return mData; }
private:
T mData;
};
```
这个类模板定义了一个名为 `MyTemplate` 的类,它有一个模板参数 `T`,可以是任何类型。类中有一个私有成员变量 `mData`,用于存储传递给构造函数的数据,并且有一个公共成员函数 `getData()`,用于返回存储的数据。在实例化该类模板时,可以将任何类型的数据传递给构造函数。
例如,我们可以实例化一个 `MyTemplate` 类型的对象,如下所示:
```c++
MyTemplate<int> myInt(42);
int data = myInt.getData(); // data 的值为 42
```
在这个例子中,我们实例化了一个 `MyTemplate<int>` 对象,并将整数值 42 传递给构造函数。然后,我们调用 `getData()` 函数来获取存储的数据,并将其存储在变量 `data` 中。
相关问题
怎么定义一个类模板参数的函数指针
在定义一个类模板参数的函数指针时,需要使用模板参数来表示函数指针的类型,然后在类中使用该函数指针类型作为成员变量或成员函数的参数类型。
以下是一个示例代码,展示了如何定义一个类模板参数的函数指针:
```cpp
template <typename Func>
class MyClass {
public:
// 成员函数使用函数指针作为参数类型
void doSomething(Func func) {
// 调用函数指针
func();
}
};
// 函数指针类型
void myFunction() {
// 函数体
}
int main() {
MyClass<void (*)()> obj; // 类模板实例化,指定函数指针类型为 void (*)()
obj.doSomething(myFunction); // 调用成员函数,并传递函数指针作为参数
return 0;
}
```
在上面的示例中,`MyClass` 是一个类模板,`Func` 是模板参数,它表示函数指针的类型。在 `doSomething()` 成员函数中,使用 `Func` 作为参数类型,接收一个函数指针并调用它。
设计一个完整的 C++程序定义一个类模板,利用它实现 10个整 数、浮点数和字符的排序,在主函数中定义对象并调用相应成员函数
好的,以下是一个完整的 C++ 程序定义一个类模板,可以实现整数、浮点数和字符的排序:
```cpp
#include <iostream>
#include <algorithm>
using namespace std;
template <typename T>
class Sorter {
public:
Sorter(T* arr, int size) : m_arr(arr), m_size(size) {}
void sort() {
std::sort(m_arr, m_arr + m_size);
}
void print() {
for (int i = 0; i < m_size; i++) {
std::cout << m_arr[i] << " ";
}
std::cout << std::endl;
}
private:
T* m_arr;
int m_size;
};
int main() {
// 整数排序
int intArr[10] = {5, 8, 2, 7, 1, 9, 3, 10, 4, 6};
Sorter<int> intSorter(intArr, 10);
intSorter.sort();
intSorter.print();
// 浮点数排序
float floatArr[10] = {5.2, 8.1, 2.4, 7.6, 1.3, 9.7, 3.8, 10.0, 4.5, 6.9};
Sorter<float> floatSorter(floatArr, 10);
floatSorter.sort();
floatSorter.print();
// 字符排序
char charArr[10] = {'c', 'a', 'e', 'g', 'd', 'b', 'i', 'j', 'f', 'h'};
Sorter<char> charSorter(charArr, 10);
charSorter.sort();
charSorter.print();
return 0;
}
```
在这个程序中,我们定义了一个类模板 `Sorter`,它有一个模板参数 `T`,表示要排序的类型。在类的构造函数中传入一个数组和数组大小,然后在 `sort` 函数中调用 C++ 标准库中的 `std::sort` 函数进行排序,最后在 `print` 函数中打印排序后的结果。
在 `main` 函数中,我们分别定义了三个数组,分别为整数数组、浮点数数组和字符数组,并传入 `Sorter` 类中进行排序和打印。