Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: сделать статическое перечисление
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
WHALE
есть некий класс,имеющий в качестве приватного метода обработчик прерывания.
для внутренних нужд класса хотелось бы применить перечисление.
когда я объявляю в хидере перечисление следующим образом:
h-файл
Код
class  ANALYSIS  
  {
private:
enum STATE_IZM{NO_STATE,IZM_SI,IZM_STR1,IZM_STR2}  state_izm;
   #pragma vector =  INT0_vect
    __interrupt static void  KI_INT(void);    
  };


И применяю в файле срр
Код
_interrupt  void  ANALYSIS:: KI_INT(void)  
{
state_izm=IZM_SI;
}

компилятор справедливо ругается что в статическом методе применяются нестатические члены.

но сделать перечисление статическим никак не получается..
h-файл
Код
class  ANALYSIS  
  {
private:
enum STATE_IZM{NO_STATE,IZM_SI,IZM_STR1,IZM_STR2};
static STATE_IZM state_izm;
   #pragma vector =  INT0_vect
    __interrupt static void  KI_INT(void);    
  };


срр-файл определение статического перечисления
Код
// ни так не проходит
enum ANALYSIS:: state_izm;                     // ругается не знаю тега state_izm

// ни так
  enum ANALYSIS::  STATE_IZM state_izm;  //ошибка STATE_IZM не доступно


я в плюсах не очень, да и IAR только осваиваю.Где собака порылась?
IgorKossak
Наверное так:
ANALYSIS::STATE_IZM ANALYSIS::state_izm;
enum писать не надо, STATE_IZM это уже имя типа.
Понадобится ещё вынести enum в public:
WHALE
Большое спасибо, так скомпилировалось.
Цитата
Понадобится ещё вынести enum в public:

скомпилировалось и как private.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.