Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Присвоение значения типу enum в С++
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Sergey-Ufa
Для улучшения читаемости кода захотел использовать в форме Form1 тип enum
. . . . . .
public:
enum {METOD, FILE} Place;
. . . . . .
внутри формы все нормально работает
. . . . . .
Place=METOD;
switch(Place)
{case METOD:
. . . . . .
break;
case FILE:
. . . . . .
};
Но если попытаться придать значение Place из формы Form2
. . . . . .
Form1->Place=METOD;
то компилятор ругается, что не знает никакого METOD.
Пролазит либо
Form1->Place=0;
либо объявление Place в Form1 в качестве глобальной переменной. Ни то, ни другое мне не нравится по причине потери наглядности и читаемости. Есть ли какой нибудь выход?
Xenia
Цитата(Sergey-Ufa @ Jul 29 2014, 21:24) *
Для улучшения читаемости кода захотел использовать в форме Form1 тип enum
. . . . . .
public:
enum {METOD, FILE} Place;
. . . . . .
внутри формы все нормально работает
Но если попытаться придать значение Place из формы Form2
. . . . . .
Form1->Place=METOD;
то компилятор ругается, что не знает никакого METOD.
Есть ли какой нибудь выход?


Выход есть. Енумы, объявленные внутри класса, можно использовать снаружи, с явным указанием класса:
Form1->Place=КЛАССФОРМЫ::METOD;
Но вы не указали, как зовут класс, к которому принадлежит Form1, а потому конкретнее дать ответ не могу. А само Form1 - это не имя класса, а имя его представителя.
Sergey-Ufa
Цитата(Xenia @ Jul 29 2014, 21:04) *
Выход есть. Енумы, объявленные внутри класса, можно использовать снаружи, с явным указанием класса:
Form1->Place=КЛАССФОРМЫ::METOD;
Но вы не указали, как зовут класс, к которому принадлежит Form1, а потому конкретнее дать ответ не могу. А сама Form1 - это не класс, а его представитель.


class TComments : public TForm
{public:
enum {METOD, FILE} Place;
. . . . . .
}
extern PACKAGE TComments *Comments;


На форме Form2
Comments->Place=TComments::METOD;
Правильно?


Xenia, все работает. Спасибо!
Xenia
Цитата(Sergey-Ufa @ Jul 29 2014, 22:22) *
Comments->Place=TComments::METOD;


Только "метод" обычно пишут как "METHOD", а так оно глаз режет. sm.gif
Sergey-Ufa
biggrin.gif biggrin.gif biggrin.gif
menzoda
Цитата(Xenia @ Jul 29 2014, 22:35) *
Только "метод" обычно пишут как "METHOD", а так оно глаз режет. sm.gif

Вот это дельное замечание, а то от всяких massiv, znachenie, indeks, summa и других подобных фантазий, у меня кровь из глаз течет.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.