powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Почему такая фигня с enum ?
11 сообщений из 11, страница 1 из 1
Почему такая фигня с enum ?
    #34932092
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
class classA
{
public:
	enum eA { A1 = - 1  };	// *1
	eA	Test();				// *2
};


classA::eA classA::Test()
{
	return eA::A1;
}



int _main()
{
	classA a;

	std::cout << a.Test();

	return  0 ;
}

стоит строки *1 и *2 поменять местами, и оно уже не помнит что такое eA , это что все время надо делать предварительное объявление типа enum eA внутри своего же класса?
...
Рейтинг: 0 / 0
Почему такая фигня с enum ?
    #34932106
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, то все используемые типы должны быть преварительно объявлены.
...
Рейтинг: 0 / 0
Почему такая фигня с enum ?
    #34932113
Фотография Paradoxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что в этом случае получаеться так что вы обявляете функцию которая возвращает тип о котором не известно.
...
Рейтинг: 0 / 0
Почему такая фигня с enum ?
    #34932119
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enum, вроде как, нельзя объявлять. Только определять.
...
Рейтинг: 0 / 0
Почему такая фигня с enum ?
    #34932191
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проблема вот в чем:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
class classA
{
private:
	eA	PrivateTest();			

public:
	enum eA { A1 = - 1  };
	eA	PublicTest();				
};


classA::eA classA::PrivateTest()
{
	return eA::A1;
}

classA::eA classA::PublicTest()
{
	return PrivateTest();
}



int main()
{
	classA a;

	if ( classA::eA::A1 == a.PublicTest() )
		std::cout << "\nTRUE\n";
	else
		std::cout << "\nFALSE\n";

	return  0 ;
}




тип возвращаемых данных можно объявить как int, но я этого делать нехочу, т.к. удобно визуально определять, что возвращает метод, как можно заставить работать такой код?
...
Рейтинг: 0 / 0
Почему такая фигня с enum ?
    #34932219
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделай, например, так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
class classA
{
       //-----[ типы ]-----
public:
	enum eA { A1 = - 1  };
       //другие объявления типов

private:
       //закрытые типы

       //-----[ интерфейс ]-----
public:
	eA	PublicTest();				

       //-----[ реализация ]-----
protected:
private:
	eA	PrivateTest();			
};


classA::eA classA::PrivateTest()
{
	return eA::A1;
}

classA::eA classA::PublicTest()
{
	return PrivateTest();
}



int main()
{
	classA a;

	if ( classA::eA::A1 == a.PublicTest() )
		std::cout << "\nTRUE\n";
	else
		std::cout << "\nFALSE\n";

	return  0 ;
}




Tubrik

тип возвращаемых данных можно объявить как int, но я этого делать нехочу, т.к. удобно визуально определять, что возвращает метод, как можно заставить работать такой код?

Так и не надо. Ты его не сможешь в eA присводить без варнингов и явного приведения типов. Надо лишь поработать над дизайном интерфейса класса и не более того.
...
Рейтинг: 0 / 0
Почему такая фигня с enum ?
    #34932221
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дитятко, не плачь
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
class classA
{
public:
	enum eA { A1 = - 1  };
private:
	eA	PrivateTest();			
public:
	eA	PublicTest();				
};
...
Рейтинг: 0 / 0
Почему такая фигня с enum ?
    #34932228
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кажется допер
объявил дополнительную секцию PUB:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
class classA
{
public:
	enum eA { A1 = - 1  };

private:
	eA	PrivateTest();			

public:
	
	eA	PublicTest();				
};

и оно запахало, не знаю только насколько это грамотно делать неск. одинаковых секций доступа..
...
Рейтинг: 0 / 0
Почему такая фигня с enum ?
    #34932321
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tubrikи оно запахало, не знаю только насколько это грамотно делать неск. одинаковых секций доступа..

грамотно, грамотно.
...
Рейтинг: 0 / 0
Почему такая фигня с enum ?
    #34933173
Leshij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какое-то непонятное соглашение об именах -- имя класса с маленькой буквы,
имя метода -- с большой. Это где так принято?
--
Здесь у нас туманы и дожди, здесь у нас холодные рассветы,
Здесь на неизведанном пути ждут замысловатые сюжеты!
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Почему такая фигня с enum ?
    #34933776
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leshij
Какое-то непонятное соглашение об именах -- имя класса с маленькой буквы,
имя метода -- с большой. Это где так принято?
--
Здесь у нас туманы и дожди, здесь у нас холодные рассветы,
Здесь на неизведанном пути ждут замысловатые сюжеты!
Posted via ActualForum NNTP Server 1.4

это же только для примера %)
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Почему такая фигня с enum ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]