Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: variable or field '...' declared void
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
void*
вобщем есть у меня класс, в нем слот:
public slots:
                void createNewProject(CPDialog::ProjectType type, const QString &dir, const QString &name);

вот его реализация:
void MainWindow::createNewProject(CPDialog::ProjectType type, const QString &dir, const QString &name) {
     switch(type) {
                  case CPDialog::Console_Application:
                       createConsoleApp(dir, name);
                       break;
                  case CPDialog::Linux_Application:
                       createLinuxApp(dir, name);
                       break;
                  case CPDialog::Windows_Application:
                       createWindowsApp(dir, name);
                       break;
                  case CPDialog::MacOS_Application:
                       createMacOSApp(dir, name);
                       break;
                  }
}

вот тут он соединяется с сигналом:
void MainWindow::newProject() { 
     CPDialog *dialog = new CPDialog;
     connect(dialog, SIGNAL(needCreateProject(CPDialog::ProjectType, const QString&, const QString&)),
     this, SLOT(createNewProject(CPDialog::ProjectType, const QString&, const QString&)));
     dialog->exec();
     //...
}


при компиляции выскакивают ошибки:
error: variable or field 'createNewProject' declared void //это он ругается на определение в хидере
error: expected ';' before '(' token //это он ругается на определение в хидере
error: no 'void MainWindow::createNewProject(CPDialog::ProjectType, const QString&, const QString&)' member function declared in class 'MainWindow' //а это уже ругань на реализацию метода

подскажите пожалуйста в чем ошибка? ниче не понимаю...
ViGOur
Приведи этот класс полностью...
AD
По приведенному коду сложно сказать. Вроде все правильно. А у тебя есть наследование от класса QObject, и есть макрос Q_OBJECT?
void*
наследуюсь от QMainWindow, Q_OBJECT естественно есть
вот определения(весь класс довольно громоздкий):
#ifndef MAINWINDOW_H_
#define MAINWINDOW_H_
#include <QMainWindow>
class TabWidget;
class QTabWidget;
class ProjectView;
class CPDialog;
//...
class MainWindow : public QMainWindow {
    Q_OBJECT
//...
};
#endif
Tonal
CPDialog только задекларирован, но не определён. А ты в декларации createNewProject используешь его внутренний тип CPDialog::ProjectType.
Litkevich Yuriy
Tonal, т.е. ему надо поменять:
class CPDialog;
на:
#include "CPDialog"

так?
void*
действительно, Tonal, спасибо большое тебе, помогло
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2021 IPS, Inc.