Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > приватный класс


Автор: Hoo 6.3.2007, 04:31
привет
есть несколько файлов
main.cpp
Код

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

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    MainDialog mainDialog;
    return mainDialog.exec();
}


maindialog.h
Код

#ifndef MAINDIALOG_H
#define MAINDIALOG_H

#include <QDialog>
#include "frame.h"

class QListWidget;
class QHBoxLayout;

class MainDialog : public QDialog
{
    Q_OBJECT
public:
    MainDialog();
private:
    QListWidget *ListLeft;
    QListWidget *ListRight;
    QHBoxLayout *MainLayout;
    Frame *Test;
};

#endif

maindialog.cpp
Код

#include <QtGui>
#include "maindialog.h"

MainDialog::MainDialog()
{
    ListLeft = new QListWidget;
    ListRight = new QListWidget;
    MainLayout = new QHBoxLayout(this);
    new QListWidgetItem("Check", ListLeft);
    new QListWidgetItem("Ok", ListRight);
    MainLayout->addWidget(ListLeft);
    MainLayout->addWidget(ListRight);
    Test = new Frame;
    QFont f("Helvetica", 12, QFont::Bold);
    ListLeft->setFont(f);
    setLayout(MainLayout);
}

frame.h
Код

class Frame 
{
public:
    Frame(void);
public:
    ~Frame(void);
};

frame.cpp
Код

#include "frame.h"

Frame::Frame(void)
{
};

Frame::~Frame(void)
{
}


все компилится, а при запуске вылетает
при том, если заменить в конструкторе диалога
Код

Test = new Frame;

на 
Код

Frame Test;

и убрать его из private, то все нормально

что я делаю не так?

спасибо

Автор: Hoo 6.3.2007, 13:35
разобрался

в файле maindialog.h надо добавить
Код

class Frame;


почему так?

ведь я уже подключил frame.h  smile 

Автор: threef 7.3.2007, 20:49
У тебя нету другого Frame ?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)