Russian Qt Forum
Май 03, 2024, 16:36 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Objective-C типы в .h файле  (Прочитано 3027 раз)
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« : Март 28, 2012, 21:56 »

Здравствуйте. Есть такой заголовочный файл, включенный в раздел OBJECTIVE_HEADERS:
Код
C++ (Qt)
#ifndef MESSAGECHECKBOX_H
#define MESSAGECHECKBOX_H
 
#include <QtGlobal>
 
#ifdef Q_WS_MACX
@class NSAlert;
class QWidget;
 
class MessageCheckBox
{
public:
   MessageCheckBox(const QString &text, const QString &checkboxText, QWidget *parent = 0);
   virtual ~MessageCheckBox();
 
   void setChecked(bool checked);
   bool isChecked();
 
public:
   int exec();
 
private:
   NSAlert *_alert;
};
#else
#include <QDialog>
 
class QLabel;
class QCheckBox;
class QDialogButtonBox;
 
class MessageCheckBox : public QDialog
{
   Q_OBJECT
 
public:
   MessageCheckBox(const QString &text, const QString &checkboxText, QWidget *parent = 0);
 
   void setChecked(bool checked);
   bool isChecked();
 
private:
   QLabel *_text;
   QCheckBox *_checkBox;
   QDialogButtonBox *_buttonBox;
};
#endif // Q_WS_MACX
 
#endif // MESSAGECHECKBOX_H
 

Компилятор ругается на Objective-C-style forward declaration класса @class NSAlert:
Цитата: gcc
../MedianXLOfflineTools/messagecheckbox.h:7: error: stray '@' in program
Цитата: clang
../MedianXLOfflineTools/messagecheckbox.h:7:1: error: expected unqualified-id
@class NSAlert;
^
../MedianXLOfflineTools/messagecheckbox.h:23:5: error: unknown type name 'NSAlert'
    NSAlert *_alert;
    ^

Пробовал писать без собачки, подключать #import <AppKit/NSAlert.h> прямо в заголовочном - не помогает. Если сделать NSAlert *_alert глобальной переменной в .mm и убрать forward declaration, то все ок.

Подскажите пожалуйста что я делаю не так.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.073 секунд. Запросов: 22.