Поиск:

Ответ в темуСоздание новой темы Создание опроса
> multiple definition... 
V
    Опции темы
htzg
Дата 24.3.2012, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 17.4.2010

Репутация: нет
Всего: нет



Здравствуйте!
Написал класс. Но при его использовании выходит след. проблема:
user posted image

вот исходники:
Код

#ifndef ADDGRIDDIALOG_H
#define ADDGRIDDIALOG_H

#include <QDialog>

#include "grid.h"

namespace Ui {
    class AddGridDialog;
}

class AddGridDialog : public QDialog
{
    Q_OBJECT

public:
    explicit AddGridDialog(QWidget *parent = 0);
    ~AddGridDialog();

signals:
    void getGridSignal(Grid grid);

public slots:
    void createGrid();

private:
    Ui::AddGridDialog *ui;

    QList<QList<QPointF> > *points;
    Grid grid;
};

#endif // ADDGRIDDIALOG_H




Код

#include "addgriddialog.h"
#include "ui_addgriddialog.h"

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

    points = new QList<QList<QPointF> > ;

    connect(ui->buttonBox,SIGNAL(accepted()),
            this,SLOT(createGrid()));
}

AddGridDialog::~AddGridDialog()
{
    delete ui;
}


void AddGridDialog::createGrid()
{


    grid.name = ui->gridNameLineEdit->text();
    grid.dx = ui->dx->text().toInt();
    grid.dy = ui->dy->text().toInt();
    grid.dz = ui->dz->text().toInt();





    qreal  x=0.0,
           y=0.0;

    for(int j=-1;   j < grid.dy   ;++j)
    {
        QList<QPointF> temp;
        for(int i=-1;   i < grid.dx   ;++i)
            temp.append(  QPointF(x+=100.0,y+=100.0)  );
        points->append(temp);
    }

    grid.points = points;

    emit getGridSignal(grid);

}



собственно в чем проблема? 
Спасибо!
PM MAIL   Вверх
boostcoder
Дата 25.3.2012, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 4
Всего: 110



Цитата(htzg @  24.3.2012,  23:09 Найти цитируемый пост)
namespace Ui {
    class AddGridDialog;
}

раз уж форвард ты впихнул в неймспейс, то почему декларация/реализация не в неймспейсе? ;)

PM WWW   Вверх
htzg
Дата 25.3.2012, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 17.4.2010

Репутация: нет
Всего: нет



дело в том что этот каласс Creator создал.
Я только внутри самого класса изменения внес.
Может дело во том что MainWindow (так же созданный Creatorом) в том же пространстве?
Код

namespace Ui {
    class MainWindow;
}

PM MAIL   Вверх
boostcoder
Дата 25.3.2012, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 4
Всего: 110



Цитата(htzg @  25.3.2012,  11:08 Найти цитируемый пост)
этот каласс Creator создал

мне, все же виднее, где должна быть реализация ;)

PM WWW   Вверх
htzg
Дата 25.3.2012, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 17.4.2010

Репутация: нет
Всего: нет



Цитата(boostcoder @  25.3.2012,  11:26 Найти цитируемый пост)
мне, все же виднее, где должна быть реализация ;)

можно показать как должно быть?(на моем коде)  smile 

PM MAIL   Вверх
math64
Дата 25.3.2012, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Qt Creator сделал всё правильно - класс AddGridDialog в файлах addgriddialog.h,  addgriddialog.cpp и Ui::AddGridDialog в файле ui_addgriddialog.h
Возможно, ошибка в файле проекта (два раза добавлены одни и те же файлы) или нужно заново перегенерить Makefile.Debug
PM   Вверх
boostcoder
Дата 25.3.2012, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 4
Всего: 110



Цитата(math64 @  25.3.2012,  12:24 Найти цитируемый пост)
класс AddGridDialog в файлах addgriddialog.h,  addgriddialog.cpp и Ui::AddGridDialog в файле ui_addgriddialog.h

не очень понял...
покажи как это выглядит в реализации.

PM WWW   Вверх
htzg
Дата 25.3.2012, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 17.4.2010

Репутация: нет
Всего: нет



Цитата(math64 @  25.3.2012,  12:24 Найти цитируемый пост)
Qt Creator сделал всё правильно - класс AddGridDialog в файлах addgriddialog.h,  addgriddialog.cpp и Ui::AddGridDialog в файле ui_addgriddialog.h
Возможно, ошибка в файле проекта (два раза добавлены одни и те же файлы) или нужно заново перегенерить Makefile.Debug 


до этого я баловался - создавал несколько раз AddGridDialog. Новые фалы он записывал на старые. 
Как перегенерить  Makefile.Debug? 
PM MAIL   Вверх
math64
Дата 25.3.2012, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Цитата(htzg @  25.3.2012,  12:32 Найти цитируемый пост)
до этого я баловался - создавал несколько раз AddGridDialog. Новые фалы он записывал на старые. 
Как перегенерить  Makefile.Debug?  

Проверь файл OperationPv1.pro - нет ли там повторений.
Код

SOURCES += \
  addgriddialog.cpp \
  array.cpp \
  ...
HEADERS += \
  addgriddialog.h \
  array.h \
  ...
FORMS += \
  addgriddialog.ui \
  mainwindow.ui

Дря перегенерации Makefile - удалить старые или
Сборка -> очистить всё, пересобрать всё 

Цитата(boostcoder @  25.3.2012,  12:30 Найти цитируемый пост)
покажи как это выглядит в реализации.

Как было показано в первом посте.
Генерируется только конструктор (вызывает ui->setupUi(this); ) и деструктор (вызывает delete ui; ), остальное добавлено вручную.
Если слот назвать buttonBox_accepted() то connect() будет не нужен, такой слот (пустой) тоже может быть сгенрирован автоматически.
Файл ui_*.h генерируется с помощью uic из *.ui и не должен редактироваться.
PM   Вверх
htzg
Дата 25.3.2012, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 17.4.2010

Репутация: нет
Всего: нет



Цитата(math64 @  25.3.2012,  17:02 Найти цитируемый пост)
Проверь файл OperationPv1.pro - нет ли там повторений.

Код


QT       += core gui

TARGET = OperationEPv1
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp \
    grid.cpp \
    array.cpp \
    point.cpp \
#    addgriddialog.cpp \
    addgriddialog.cpp

HEADERS  += mainwindow.h \
    myConst.h \
    grid.h \
    array.h \
    point.h \
#    addgriddialog.h \
    addgriddialog.h

FORMS    += mainwindow.ui \
#    addgriddialog.ui \
#    addgriddialog.ui \
    addgriddialog.ui


я закоментил повторения эти ошибки пропали.
Правда при сборки след ошибка:
user posted image

она связана с AddGridDialog?
Если нет то тема закрыта.
PM MAIL   Вверх
math64
Дата 26.3.2012, 08:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Можешь не комментировать, а просто удалить.
Новая ошибка со старой не связана. Посмотри по стеку на последнюю строку из твоих исходинков. Ставь точки останова и т.д.
PM   Вверх
htzg
Дата 26.3.2012, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 17.4.2010

Репутация: нет
Всего: нет



с ошибкой уже начал разбираться!
Спасибо большое всем! 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0854 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.