Перейти к содержанию
    

Keil. Объявить класс в *.h

Здравствуйте. Что то я совсем запутался с кейлом :( Создаю h файл и пытаюсь написать класс, компилятор ругается "identifier "class" is undefined" . Переношу этот же объявление класса в с++ файл, там все нормально компилится. Подскажите , пожалуйста, что надо настроить, чтобы объявить класс в хэдере.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте. Что то я совсем запутался с кейлом :( Создаю h файл и пытаюсь написать класс, компилятор ругается "identifier "class" is undefined" . Переношу этот же объявление класса в с++ файл, там все нормально компилится. Подскажите , пожалуйста, что надо настроить, чтобы объявить класс в хэдере.

Примерно так, в хидере

#ifndef MY_INCLUDE
#define MY_INCLUDE

// подключить необходимые хидеры 

class Myclass
{
private:
// здесь закрытые члены

public:
// открытый интерфейс, не забыть про конструктор

protected:
// защищенные члены


};


#endif //MY_INCLUDE

 

В файле CPP

#include "My_include.h"

// Далее реализация методов класса
Myclass::Myclass( ) // если надо с параметрами
{
...........
}


void Myclass::Func1(int par1, char par2)
{
............
}

...........
...........

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Главное не пытаться оттранслировать 'голый' .h файл. В частности он не должен быть включен в список сорцов в IDE

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, конечно, но с с++ у меня все в порядке и я это понимаю =) Дело в другом - когда я пишу class Myclass{}; в хэдере, то не подсвечивается слово class и при компиляции выдает ошибку. А если я это в с++ файл переношу , т.е. и объявление и определение сразу делаю, то все отлично компилируется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

int0x25 предложенное вам выше было, кстати, не с++(хотя дело похоже не в этом). Подсветка тоже ни о чём не говорит (кейл последней версии 4.х подсвечивает class но не подсвечивает bool в хидерах, хотя всё работает). Вы говорите "c++ файл", предлагаю для определённости называть это "cpp-файл" (где cpp - расширение). Ваш хидер с классами должен подключаться только к cpp-файлам. В проекте есть чистые си-файлы? Конечно, задать(форсировать) для компилятора тип файла (c/c++) можно и опциями проекта, но смысл от этого не теряется.

 

И ещё: когда компилятор находит ошибки в хидере, в окне Output сразу видно в каком модуле он это нашёл - это может помочь определиться.

 

ps: перепроверил, class в хидерах тоже не подсвечивается...

Изменено пользователем baralgin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем спасибо за помощь. На другом компе все заработало и класс компилится и шаблоны, похоже это что то с кейлом у меня дома, попробую переставить его.

Печально, конечно, что подсветка синтаксиса никакая и нет автодополнения :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...