queue1.h mainwindow.h
/ /
A.h---Mainwindow.cpp
甲#包括隊列1 Mainwidow來#include甲 A和主窗口都需要使用隊列1之一instanse,所以我以類似的定義爲「靜態隊列1 Q1;」 然後在A.h我在q1中按「A」,但是當我嘗試在mainwindow中輸出它時,我得到了垃圾。 當我嘗試推動mainwindow.h內的「mainwindow」,然後輸出它是好的。 我使用Qt 4.7.0,贏得7隊列發生了什麼? (C++)
queue1.h
#ifndef QUEUE1_H
#define QUEUE1_H
#include <queue>
#include <string>
class queue1
{
public:
queue1();
std::queue<std::string> q;
};
#endif // QUEUE1_H
啊
#ifndef A_H
#define A_H
#include "queue1.h"
static queue1 q1;
class A
{
public:
A(){q1.q.push("A");}
};
#endif // A_H
如果取消註釋 「q1.q.push(」 主窗口「); 「該程序將首先輸出「mainwondow」然後垃圾。該隊列變空後。
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "a.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//q1.q.push("mainwindow");
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
ui->label->setText(q1.q.front().c_str());
q1.q.pop();
}
對於這個測試項目,我沒有改變mainwindow.h但在這裏它是。
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
private slots:
void on_pushButton_clicked();
};
#endif // MAINWINDOW_H
問題是? – 2011-05-28 12:51:25
爲什麼我不能輸出「A」,它會發生什麼,爲什麼 – Stals 2011-05-28 12:52:36