Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Keil. Объявить класс в *.h
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
int0x25
Здравствуйте. Что то я совсем запутался с кейлом sad.gif Создаю h файл и пытаюсь написать класс, компилятор ругается "identifier "class" is undefined" . Переношу этот же объявление класса в с++ файл, там все нормально компилится. Подскажите , пожалуйста, что надо настроить, чтобы объявить класс в хэдере.
VladimirYU
Цитата(int0x25 @ Apr 1 2010, 11:36) *
Здравствуйте. Что то я совсем запутался с кейлом sad.gif Создаю 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)
{
............
}

...........
...........
XVR
Главное не пытаться оттранслировать 'голый' .h файл. В частности он не должен быть включен в список сорцов в IDE
int0x25
Спасибо, конечно, но с с++ у меня все в порядке и я это понимаю =) Дело в другом - когда я пишу class Myclass{}; в хэдере, то не подсвечивается слово class и при компиляции выдает ошибку. А если я это в с++ файл переношу , т.е. и объявление и определение сразу делаю, то все отлично компилируется.
baralgin
int0x25 предложенное вам выше было, кстати, не с++(хотя дело похоже не в этом). Подсветка тоже ни о чём не говорит (кейл последней версии 4.х подсвечивает class но не подсвечивает bool в хидерах, хотя всё работает). Вы говорите "c++ файл", предлагаю для определённости называть это "cpp-файл" (где cpp - расширение). Ваш хидер с классами должен подключаться только к cpp-файлам. В проекте есть чистые си-файлы? Конечно, задать(форсировать) для компилятора тип файла (c/c++) можно и опциями проекта, но смысл от этого не теряется.

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

ps: перепроверил, class в хидерах тоже не подсвечивается...
int0x25
Всем спасибо за помощь. На другом компе все заработало и класс компилится и шаблоны, похоже это что то с кейлом у меня дома, попробую переставить его.
Печально, конечно, что подсветка синтаксиса никакая и нет автодополнения sad.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.