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

 
 
 
Reply to this topicStart new topic
> Не могу нормально пользовать класс, После создания класса не получается до него достучатся
Andryha
сообщение May 24 2008, 16:43
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 6-04-07
Пользователь №: 26 805



Доброго времнеи суток. Помогите ламеру разобрться с иаром.
Значит проблема такая, определяю класс, как показано ниже:

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 , что это может быть, вроде все правильно, в вижуале тоже самое писал.... работает... подозрения падают на настройки компилятора, хотя в опциях везде стоит с++. Помогите плиз. хочу классы освоить
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 24 2008, 17:39
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Andryha @ May 24 2008, 19:43) *
Помогите плиз. хочу классы освоить
Если хотите освоить - надо начать с какого-нибудь букваря по С++.

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

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


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Andryha
сообщение May 24 2008, 17:57
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 6-04-07
Пользователь №: 26 805



За скорый ответ спасибо. Сделал все так, как вы советовали... не помогает... набор ошибок, выдаваемых компилятором аналогичный... вообще, складывается ощущение, будто иар отказывается понимать классы, хотя галочка с++ стоит. help.gif
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 24 2008, 19:29
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(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);


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Andryha
сообщение May 25 2008, 06:11
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 6-04-07
Пользователь №: 26 805



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

[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, 06:19
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 25 2008, 10:08
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



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


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

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

 


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


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