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

Не могу нормально пользовать класс

Доброго времнеи суток. Помогите ламеру разобрться с иаром.

Значит проблема такая, определяю класс, как показано ниже:

 

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: , что это может быть, вроде все правильно, в вижуале тоже самое писал.... работает... подозрения падают на настройки компилятора, хотя в опциях везде стоит с++. Помогите плиз. хочу классы освоить

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


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

Помогите плиз. хочу классы освоить
Если хотите освоить - надо начать с какого-нибудь букваря по С++.

 

Для кода в форме ввода есть специальная кнопка с символом "#".

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

void Test()
{
    //вызываем функцию-член этого объекта
    COM_Object.Send_To_COM0();
}

И не используйте подчеркивания перед именами - такая форма зарезервирована за компилятором.

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


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

За скорый ответ спасибо. Сделал все так, как вы советовали... не помогает... набор ошибок, выдаваемых компилятором аналогичный... вообще, складывается ощущение, будто иар отказывается понимать классы, хотя галочка с++ стоит. :help:

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


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

вообще, складывается ощущение, будто иар отказывается понимать классы, хотя галочка с++ стоит.
Иар классы понимает. Это я вам гарантирую, потому что сам его использую именно с классами. Обратите внимание, что в объявлении класса вы указали 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);

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


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

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

 

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

сори) в проэкте у меня с параметрами конечно, видимо удалил случайно....

 

 

Очень извиняюсь, ваш текст без форматирования совершенно нечитаем.

больше так не буду))

 

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

 

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

 

 

Попробуйте вот такой элементарный пример:

class a_t
{
public:
   inline a_t(int a) : a(a), b(88) {}
   int a;
   int b;
};
a_t a(6), b(33);

 

 

Попробовал, Дословно как у вас, компилит, но стоит только вписать метод и к нему обратится, выдает ошибку.

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

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


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

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();
}

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


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

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

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

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

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

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

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

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

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

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