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

 
 
> C++ Как встроить структуру __flash в класс
ASZ
сообщение Apr 2 2010, 10:15
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 302
Регистрация: 24-07-06
Из: Донецк, Украина
Пользователь №: 19 042



Есть структура:

Код
typedef void (*IFunc)(char param);

typedef  struct
{      
  char   Txt1[12];   //Строки сообщений __flash
  char   Txt2[12];
  IFunc ItemFunc;    //Указатель на функцию обслуживания
}Item;

и класс
Код
class MyСlass
{
private:
  void ItemFunc1();
  void ItemFunc2();
...
  void ItemFuncN();
public:
  Myclass();
...
};

Нужно встроить в класс массив Item Items[N] в этот класс, затруднение вызывает инициализация значений, т.к. массив должен быть __flash.
Где и как это должно делаться?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Apr 2 2010, 10:38
Сообщение #2


Гуру
******

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



Цитата(ASZ @ Apr 2 2010, 12:15) *
Код
typedef void (*IFunc)(char param);
Не получится. Указатель на функцию отличается от указателя на функцию-член.
Цитата(ASZ @ Apr 2 2010, 12:15) *
Нужно встроить массив Item Items[N] в этот класс, затруднение вызывает инициализация значений, т.к. массив должен быть __flash.
Поскольку этот массив у вас будет один на все объекты этого класса - его надо делать статаческим. А статические члены прекрасно размещаются во флешь. Нестатические члены разместить во флешь нельзя (разве что указатели на них).


--------------------
На любой вопрос даю любой ответ
"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
ASZ
сообщение Apr 2 2010, 11:03
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 302
Регистрация: 24-07-06
Из: Донецк, Украина
Пользователь №: 19 042



Цитата
Не получится. Указатель на функцию отличается от указателя на функцию-член.

И как поступить? Удалить из структуры и вынести в отдельный массив?
Цитата
Поскольку этот массив у вас будет один на все объекты этого класса - его надо делать статаческим. А статические члены прекрасно размещаются во флешь. Нестатические члены разместить во флешь нельзя (разве что указатели на них).

Т.е. функции сделать также статическими?
Если не затруднит, то как бы Вы поступили? (Тупой намек на просьбу куска кода smile.gif )
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Apr 2 2010, 11:57
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(ASZ @ Apr 2 2010, 14:03) *
И как поступить? Удалить из структуры и вынести в отдельный массив?


Вариант 1 -
Код
typedef void TMyClass::(*IFunc) (char);

Вариант 2 - функции - обработчики в классе делаете статическими.

Что использовать - зависит от вашей задачи...

Если вы поподробнее опишите, чего и зачем вам надо, можно что-нить предложить
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 26th June 2025 - 20:40
Рейтинг@Mail.ru


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