Здравствуйте. Есть такой заголовочный файл, включенный в раздел 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:
../MedianXLOfflineTools/messagecheckbox.h:7: error: stray '@' in program
../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, то все ок.
Подскажите пожалуйста что я делаю не так.