crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> variable or field '...' declared void
void*
  опции профиля:
сообщение 26.6.2008, 9:51
Сообщение #1


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 28 раз(а)




Репутация:   3  


вобщем есть у меня класс, в нем слот:
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' //а это уже ругань на реализацию метода

подскажите пожалуйста в чем ошибка? ниче не понимаю...

Сообщение отредактировал void* - 26.6.2008, 9:52
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 26.6.2008, 9:55
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3293
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Приведи этот класс полностью...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 26.6.2008, 9:57
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


По приведенному коду сложно сказать. Вроде все правильно. А у тебя есть наследование от класса QObject, и есть макрос Q_OBJECT?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
void*
  опции профиля:
сообщение 26.6.2008, 10:03
Сообщение #4


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 28 раз(а)




Репутация:   3  


наследуюсь от 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


Сообщение отредактировал void* - 26.6.2008, 10:15
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tonal
  опции профиля:
сообщение 26.6.2008, 10:10
Сообщение #5


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

Спасибо сказали: 69 раз(а)




Репутация:   17  


CPDialog только задекларирован, но не определён. А ты в декларации createNewProject используешь его внутренний тип CPDialog::ProjectType.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.6.2008, 10:12
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Tonal, т.е. ему надо поменять:
class CPDialog;
на:
#include "CPDialog"

так?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
void*
  опции профиля:
сообщение 26.6.2008, 10:14
Сообщение #7


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 28 раз(а)




Репутация:   3  


действительно, Tonal, спасибо большое тебе, помогло
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 23.9.2020, 2:37