2013-07-24 2 views
-2
char totalbuffer[2048] = {0}; 

Это инициализация массива, который я хочу. Я попытался поместить в main.cpp и мой заголовочный файл, qt creator keep показать ошибку.Как инициализировать массив с нулевым значением в приложении GUI GUI?

это мой .h код заголовка файла:

#ifndef QTPROJECT2_H 
#define QTPROJECT2_H 

#include <QDialog> 
#include <QMainWindow> 
#include <QtNetwork/QHostAddress> 
#include <QLabel> 
#include <QPushButton> 
#include <QUdpSocket> 
#include <QString> 
#include <QTcpSocket> 
#include <QDataStream> 
#include <qstring.h> 
#include <QStandardItem> 

namespace Ui { 
class QtProject2; 
} 

class QtProject2 : public QDialog 
{ 
    Q_OBJECT 

public: 
    explicit QtProject2(QWidget *parent = 0); 
    ~QtProject2(); 
    void start(QString address, quint16 port); 
    char totalbuffer[2048]={0}; 
    QStandardItemModel* ListModel; 

private slots: 
    void on_pushButton_clicked(); 

public slots: 
    void startTransfer(); 
    void disconnected(); 
    void readyRead(); 



signals: 
    void socketReady(); 


private: 
    Ui::QtProject2 *ui; 
    QTcpSocket *client; 

}; 


#endif // QTPROJECT2_H 

это мой main.cpp кодирование:

#include "qtproject2.h" 
    #include <QApplication> 

    int main(int argc, char *argv[]) 
    { 
     QApplication a(argc, argv); 
     QtProject2 w; 
     w.show(); 
     char totalbuffer[2048]={0}; 
     return a.exec(); 
    } 

это мой проект qtproject2.cpp: #include «qtproject2.h " #include "ui_qtproject2.h"

QtProject2::QtProject2(QWidget *parent) : 
    QDialog(parent), 
    ui(new Ui::QtProject2) 
{ 
    ui->setupUi(this); 

} 

QtProject2::~QtProject2() 
{ 
    delete ui; 
    QtProject2 Client2; 
    Client2.close(); 

} 


void QtProject2::startTransfer() 
{ 
    ui->slabel->setText("Connected!"); 
} 

void QtProject2::disconnected() 
{ 
    ui->slabel->setText("Disconnected!"); 
} 

void QtProject2::readyRead() 
{ 

    client->waitForBytesWritten(1000); 
    client->waitForReadyRead(3000); 
    char CustomerData_MacAdd[][18]={"14:13:12:11:67:11","52:22:22:22:22:22", "14:22:44:55:22" }; 
    char CustomerData_Username[][10]={"Robert","Alex","Ivan"}; 

    QByteArray buffer1 = client->readLine(); 
    char *temp = buffer1.data(); 
    char buffer[1024]={0}; 

    if (strncmp(temp,"*CLIENT",6)==0) 
    { 
     int j; 
     for(j=9;j<26;j++) 
     { buffer[j-9]=temp[j];} 
    }else if(strncmp(temp,"*ALERT",5)==0) 
    { 
     int j; 
     for(j=8;j<25;j++) 
     {buffer[j-8]=temp[j];} 
    } 

    //char totalbuffer[2048]={0}; 

    int k; 
    for (k=0;k<3;k++){ 
       if (strncmp(buffer,CustomerData_MacAdd[k],16)==0){ 
        strncat(totalbuffer,"User is in Queue : ",19); 
        strncat (totalbuffer,CustomerData_Username[k],size_t(CustomerData_Username[k])); 
        strncat(totalbuffer,"\n",2); 

        ui->label->setText(totalbuffer); 

     }} 

    ui->slabel->setText(buffer1); 

} 

void QtProject2::on_pushButton_clicked() 
{ 
    client = new QTcpSocket(this); 
    connect(client, SIGNAL(connected()),this, SLOT(startTransfer())); 
    connect(client, SIGNAL(disconnected()), this, SLOT(disconnected())); 
    connect(client, SIGNAL(readyRead()), this, SLOT(readyRead())); 


    /*Connect to User Define Port Address*/ 
    client->connectToHost("127.0.0.1", 1234); 
} 

Фокус для ч ar totalbuffer [2048] = {0}; , я действительно не знаю, где я должен это поставить. Я искал google и stackoverflow, весь метод использует класс и вызывает в .cpp-файле. но мое приложение является графическим, а другое - консолью.

Что мне делать? Мне действительно нужна помощь. Цените помощь и спасибо вам, ребята ~

EDITED *** это ошибка показывает.

error assigning to an array from an initializer list 

Я думаю, что список инициализации не может поместить в заголовочный файл и main.cpp так, как я собираюсь инициализировать массив? как C++ визуального студии, используя открытую переменную ....

+2

Почему бы вам не показать нам ошибку? Кроме того, вы должны использовать 'QString' или' QByteArray' для управления массивами символов. –

+1

Показать * что * ошибка? Измените свой вопрос более полным кодом (желательно [SSCCE] (http://sscce.org/)), а также добавьте полный и неотредактированный список ошибок, которые у вас есть. –

+0

извините, ребята .. я отредактировал. Я разрабатываю приложение GUI GUI, имею main.cpp qtproject2.h qtproject2.cpp Я не знаю, куда положить для публичного списка инициализации –

ответ

0

Вы можете использовать MemSet или bzero функции

memset((void*)&totalbuffer, 0, sizeof(totalbuffer)); 

или

bzero((void*)&totalbuffer, sizeof(totalbuffer)); 
0

Это не связано с Qt, но основные C++.

Члены класса инициализируются в конструкторе. Вы можете просто использовать std::fill.

Смежные вопросы