реклама на сайте
подробности

 
 
> Keil. Объявить класс в *.h
int0x25
сообщение Apr 1 2010, 07:36
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 22-02-10
Из: St.P
Пользователь №: 55 614



Здравствуйте. Что то я совсем запутался с кейлом sad.gif Создаю h файл и пытаюсь написать класс, компилятор ругается "identifier "class" is undefined" . Переношу этот же объявление класса в с++ файл, там все нормально компилится. Подскажите , пожалуйста, что надо настроить, чтобы объявить класс в хэдере.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
VladimirYU
сообщение Apr 1 2010, 08:04
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782



Цитата(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)
{
............
}

...........
...........
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 1 2010, 10:34
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Главное не пытаться оттранслировать 'голый' .h файл. В частности он не должен быть включен в список сорцов в IDE
Go to the top of the page
 
+Quote Post
int0x25
сообщение Apr 1 2010, 10:35
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 22-02-10
Из: St.P
Пользователь №: 55 614



Спасибо, конечно, но с с++ у меня все в порядке и я это понимаю =) Дело в другом - когда я пишу class Myclass{}; в хэдере, то не подсвечивается слово class и при компиляции выдает ошибку. А если я это в с++ файл переношу , т.е. и объявление и определение сразу делаю, то все отлично компилируется.
Go to the top of the page
 
+Quote Post
baralgin
сообщение Apr 1 2010, 10:59
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 92
Регистрация: 23-12-08
Из: Кишинёв
Пользователь №: 42 680



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

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

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

Сообщение отредактировал baralgin - Apr 1 2010, 11:07
Go to the top of the page
 
+Quote Post
int0x25
сообщение Apr 1 2010, 11:34
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 22-02-10
Из: St.P
Пользователь №: 55 614



Всем спасибо за помощь. На другом компе все заработало и класс компилится и шаблоны, похоже это что то с кейлом у меня дома, попробую переставить его.
Печально, конечно, что подсветка синтаксиса никакая и нет автодополнения sad.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 04:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.01376 секунд с 7
ELECTRONIX ©2004-2016