Russian Qt Forum

Компиляторы и платформы => Mac OS X => Тема начата: kambala от Март 28, 2012, 21:56



Название: Objective-C типы в .h файле
Отправлено: kambala от Март 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, то все ок.

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