#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; };模板类初始化不赋值
时间: 2024-02-25 20:54:43 浏览: 279
您的模板类 `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{}` 都表示对应的成员变量使用默认构造函数进行初始化。
相关问题
#include <QtSql>#include <QDebug>添加在哪个文件中
这两个头文件需要添加在您的源代码文件中,通常是您的 `.cpp` 文件中。
例如,如果您的主程序代码位于 `main.cpp` 文件中,则应该在该文件的顶部添加这两个头文件:
```c++
#include <QCoreApplication>
#include <QtSql>
#include <QDebug>
int main(int argc, char *argv[])
{
// ...
}
```
请注意,`<QCoreApplication>` 是QT核心模块的头文件,而 `<QtSql>` 和 `<QDebug>` 是数据库模块的头文件。
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QKeyEvent> #include <QPushButton> #include <QPainter> #include <QTime> #include <QDebug> //用来 Debug #include <QMessageBox>//自定义消息提示框 namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow(); void paintEvent(QPaintEvent *); void keyPressEvent(QKeyEvent *event); void PressUp(); void PressDown(); void PressLeft(); void PressRight(); void myRand(); QPushButton *button; int s[4][4]; int score=0; bool state; struct Ns{ int i; int j; }; public slots: void slotStart(); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H
这是一个Qt的头文件,用来定义MainWindow这个类。其中包含了一些Qt的类和命名空间。具体解释如下:
- #ifndef MAINWINDOW_H #define MAINWINDOW_H
这两行是用来防止头文件重复包含的宏定义,避免重复定义。如果已经定义了MAINWINDOW_H,则不会再次定义。
- #include <QMainWindow> #include <QKeyEvent> #include <QPushButton> #include <QPainter> #include <QTime> #include <QDebug> #include <QMessageBox>
这些是Qt的一些头文件,用来包含Qt的一些类和函数。例如,QMainWindow是Qt中的主窗口类,QKeyEvent用来处理键盘事件,QPushButton是按钮类,QPainter是绘图类,QTime是时间类,QDebug是用于调试的类,QMessageBox是自定义消息提示框。
- namespace Ui { class MainWindow; }
这是一个命名空间,用来定义MainWindow这个类。
- class MainWindow : public QMainWindow
这是一个类的定义,继承自QMainWindow类。在这个类中,我们可以定义变量、函数和槽函数。
- public:
这是一个访问限制符,表示接下来的成员函数和变量都是公有的,可以在其他类中访问。
- explicit MainWindow(QWidget *parent = nullptr);
这是MainWindow类的构造函数,用来初始化对象。
- ~MainWindow();
这是MainWindow类的析构函数,用来销毁对象。
- void paintEvent(QPaintEvent *);
这是一个虚函数,用来绘制窗口。
- void keyPressEvent(QKeyEvent *event);
这是一个函数,用来处理键盘按下事件。
- void PressUp(); void PressDown(); void PressLeft(); void PressRight(); void myRand();
这是一些函数,用来实现2048游戏的逻辑。PressUp函数表示向上移动方块,PressDown函数表示向下移动方块,PressLeft函数表示向左移动方块,PressRight函数表示向右移动方块,myRand函数表示生成新的方块。
- QPushButton *button;
这是一个指向QPushButton对象的指针。
- int s[4][4]; int score=0; bool state;
这是一些变量,用来存储2048游戏的状态和得分。
- struct Ns{ int i; int j; };
这是一个结构体,用来存储方块的位置。
阅读全文
相关推荐

















