Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Не могу нормально пользовать класс
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
Andryha
Доброго времнеи суток. Помогите ламеру разобрться с иаром.
Значит проблема такая, определяю класс, как показано ниже:

class _COM_Klass {

public:
_COM_Klass();

void Send_String_to_COM0 (const char *index, short int size){
}

void Send_To_COM0 (void){
}
}COM_Klass;


COM_Klass.Send_To_COM0();

при компиляции выскакивают ошибки на строке COM_Klass.Send_To_COM0(); :
Error[Pe077]: this declaration has no storage class or type specifier
Error[Pe247]: variable "COM_Klass" has already been defined
Error[Pe065]: expected a ";"

Юзаю иар 4.31

Мозг уже по швам smile3046.gif , что это может быть, вроде все правильно, в вижуале тоже самое писал.... работает... подозрения падают на настройки компилятора, хотя в опциях везде стоит с++. Помогите плиз. хочу классы освоить
Сергей Борщ
Цитата(Andryha @ May 24 2008, 19:43) *
Помогите плиз. хочу классы освоить
Если хотите освоить - надо начать с какого-нибудь букваря по С++.

Для кода в форме ввода есть специальная кнопка с символом "#".
Код
//Описываем функцию-член
void _COM_Klass::Send_To_COM0 (void)
{
};
// объявляем объект (экземпляр класса).
_COM_Klass COM_Object;

void Test()
{
    //вызываем функцию-член этого объекта
    COM_Object.Send_To_COM0();
}
И не используйте подчеркивания перед именами - такая форма зарезервирована за компилятором.
Andryha
За скорый ответ спасибо. Сделал все так, как вы советовали... не помогает... набор ошибок, выдаваемых компилятором аналогичный... вообще, складывается ощущение, будто иар отказывается понимать классы, хотя галочка с++ стоит. help.gif
Сергей Борщ
Цитата(Andryha @ May 24 2008, 20:57) *
вообще, складывается ощущение, будто иар отказывается понимать классы, хотя галочка с++ стоит.
Иар классы понимает. Это я вам гарантирую, потому что сам его использую именно с классами. Обратите внимание, что в объявлении класса вы указали Send_To_COM0 с параметрами, а в определении - нет. И кто в этом виноват - вы или компилятор?



Очень извиняюсь, ваш текст без форматирования совершенно нечитаем. Вроде все у вас правильно - вы определили функции прямо в определении класса. А где стоит галочка С++? Я ставлю галочку "автоматически определять по расширению" и файлам даю расширение cpp

Попробуйте вот такой элементарный пример:
Код
class a_t
{
public:
   inline a_t(int a) : a(a), b(88) {}
   int a;
   int b;
};
a_t a(6), b(33);
Andryha
Да я в прошлом(первом) своем проэкте пользовал классы, даже память под них выделял динамически. Начал второй проект. Вроде и пишу самые простые классы, обьявляю, вроде все по букварю... Компилятор ругается.

[quote]Обратите внимание, что в объявлении класса вы указали Send_To_COM0 с параметрами, а в определении - нет. И кто в этом виноват - вы или компилятор?[/quote]
сори) в проэкте у меня с параметрами конечно, видимо удалил случайно....


[quote]Очень извиняюсь, ваш текст без форматирования совершенно нечитаем.[/quote]
больше так не буду))

[quote]А где стоит галочка С++? Я ставлю галочку "автоматически определять по расширению" и файлам даю расширение cpp[/quote]

Project / Options / C/C++ Compiler / Language / Extended Embeded C++


[quote]Попробуйте вот такой элементарный пример:
Код
class a_t
{
public:
   inline a_t(int a) : a(a), b(88) {}
   int a;
   int b;
};
a_t a(6), b(33);

[/quote][/quote]


Попробовал, Дословно как у вас, компилит, но стоит только вписать метод и к нему обратится, выдает ошибку.
Код
class a_t
{
public:
   inline a_t(int a) : a(a), b(88) {}
   int a;
   int b;
  
   inline void b_t(){
     a = b;
   }
};
a_t a(6), b(33);

a_t a_t_Object(25);

a_t_Object.b_t();


Error[Pe077]: this declaration has no storage class or type specifier
Сергей Борщ
Цитата(Andryha @ May 25 2008, 09:11) *
Код
a_t a_t_Object(25);

a_t_Object.b_t();


Error[Pe077]: this declaration has no storage class or type specifier
Если я правильно понял вашу проблему, попробуйте так:
Код
void Test()
{
    a_t_Object.b_t();
}
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.