Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Почему такая фигня с enum ? / 11 сообщений из 11, страница 1 из 1
12.11.2007, 13:33:47
    #34932092
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему такая фигня с enum ?
Код: 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
12.11.2007, 13:37:34
    #34932106
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему такая фигня с enum ?
Вообще, то все используемые типы должны быть преварительно объявлены.
...
Рейтинг: 0 / 0
12.11.2007, 13:38:40
    #34932113
Paradoxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему такая фигня с enum ?
Потому что в этом случае получаеться так что вы обявляете функцию которая возвращает тип о котором не известно.
...
Рейтинг: 0 / 0
12.11.2007, 13:40:12
    #34932119
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему такая фигня с enum ?
enum, вроде как, нельзя объявлять. Только определять.
...
Рейтинг: 0 / 0
12.11.2007, 13:56:21
    #34932191
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему такая фигня с enum ?
проблема вот в чем:

Код: 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
12.11.2007, 14:02:04
    #34932219
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему такая фигня с enum ?
Сделай, например, так:

Код: 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
12.11.2007, 14:02:39
    #34932221
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему такая фигня с enum ?
Дитятко, не плачь
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
class classA
{
public:
	enum eA { A1 = - 1  };
private:
	eA	PrivateTest();			
public:
	eA	PublicTest();				
};
...
Рейтинг: 0 / 0
12.11.2007, 14:03:35
    #34932228
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему такая фигня с enum ?
кажется допер
объявил дополнительную секцию 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
12.11.2007, 14:20:08
    #34932321
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему такая фигня с enum ?
Tubrikи оно запахало, не знаю только насколько это грамотно делать неск. одинаковых секций доступа..

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

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


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