crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в variable or field '...' declared void
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
void* Дата 26.6.2008, 10:14
  действительно, Tonal, спасибо большое тебе, помогло
Litkevich Yuriy Дата 26.6.2008, 10:12
  Tonal, т.е. ему надо поменять:
class CPDialog;
на:
#include "CPDialog"

так?
Tonal Дата 26.6.2008, 10:10
  CPDialog только задекларирован, но не определён. А ты в декларации createNewProject используешь его внутренний тип CPDialog::ProjectType.
void* Дата 26.6.2008, 10:03
  наследуюсь от 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
AD Дата 26.6.2008, 9:57
  По приведенному коду сложно сказать. Вроде все правильно. А у тебя есть наследование от класса QObject, и есть макрос Q_OBJECT?
ViGOur Дата 26.6.2008, 9:55
  Приведи этот класс полностью...
void* Дата 26.6.2008, 9:51
  вобщем есть у меня класс, в нем слот:
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' //а это уже ругань на реализацию метода

подскажите пожалуйста в чем ошибка? ниче не понимаю...
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 9.12.2021, 7:04