#include <QMap>#include <QVector>#include <QCache>template<class T>class MyTemplateClass {public: // 构造函数,初始化数据成员 MyTemplateClass(const T& data) : t(data) {} // 公有数据成员 T t; QMap<QString, QVector<T>> t_map; QCache<QString, QVector<T>> t_cache;private: // 私有数据成员 T m_data;};的调用
时间: 2024-02-04 09:01:55 浏览: 63
可以这样调用:
```
MyTemplateClass<int> myObj(10); // 创建一个 MyTemplateClass<int> 对象,初始化为 10
myObj.t_map.insert("test", QVector<int>({1, 2, 3})); // 往 t_map 中插入一个键值对
myObj.t_cache.insert("test", QVector<int>({4, 5, 6})); // 往 t_cache 中插入一个键值对
```
这里我们将 MyTemplateClass 实例化为了 `MyTemplateClass<int>`,因此 `t` 的类型为 `int`。在创建对象时,我们传入了一个值为 10 的参数,因此 `t` 的值为 10。
我们也往 `t_map` 和 `t_cache` 中插入了键值对,其中键为 "test",值为 `{1, 2, 3}` 和 `{4, 5, 6}`。注意,由于 `t_map` 和 `t_cache` 是 `QMap` 和 `QCache` 类型的成员变量,因此它们的操作方式与普通的 `QMap` 和 `QCache` 对象相同。
相关问题
#include <QDebug> #include <type_traits> struct MyStruct1 { int x; int y; }; struct MyStruct2 { int x; QString y; }; template<typename T> class MyTemplateClass { public: MyTemplateClass(T t) : m_t(t) {} T value() const { return m_t; } private: T m_t; QMap<QString, QVector<T>> t_map; QMap<QString, QVector<T>> old_map; QCache<QString, QVector<T>> t_cache; QVector<T> t_vctor; };模板类初始化不赋值
您的模板类 `MyTemplateClass` 是可以不赋值初始化的,例如:
```
MyTemplateClass<MyStruct1> obj1{}; // 使用默认构造函数初始化
MyTemplateClass<MyStruct2> obj2{MyStruct2{1, "hello"}}; // 使用自定义构造函数初始化
```
如果您想在构造函数中对成员变量进行初始化,那么可以在成员变量后面跟上初始化列表,例如:
```
template<typename T>
class MyTemplateClass {
public:
MyTemplateClass(T t) : m_t(t), t_map{}, old_map{}, t_cache{}, t_vctor{} {}
// ...
private:
T m_t;
QMap<QString, QVector<T>> t_map;
QMap<QString, QVector<T>> old_map;
QCache<QString, QVector<T>> t_cache;
QVector<T> t_vctor;
};
```
在上述代码中,`t_map{}`、`old_map{}`、`t_cache{}`、`t_vctor{}` 都表示对应的成员变量使用默认构造函数进行初始化。
template<class T> class MyTemplateClass { public: MyTemplateClass(const T& data) : m_data(data) {} T t; QMap<QString,QVector<T>>t_map; QCache<QString,QVector<T>>t_cache; private: T m_data; };的实现
以下是 MyTemplateClass 的实现代码:
```c++
#include <QMap>
#include <QVector>
#include <QCache>
template<class T>
class MyTemplateClass {
public:
// 构造函数,初始化数据成员
MyTemplateClass(const T& data) : t(data) {}
// 公有数据成员
T t;
QMap<QString, QVector<T>> t_map;
QCache<QString, QVector<T>> t_cache;
private:
// 私有数据成员
T m_data;
};
```
在这个实现中,MyTemplateClass 是一个模板类,使用了一个类型参数 T,它可以代表任意类型。构造函数接收一个类型为 T 的参数 data,并将其存储在私有数据成员 m_data 中。公有数据成员 t、t_map 和 t_cache 分别是 T 类型、QMap 类型和 QCache 类型的变量,用于存储不同类型的数据。由于这些数据成员都是公有的,可以直接通过对象访问它们。
阅读全文