Форум программистов, компьютерный форум CyberForum.ru

Работа с классами - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
fen1ksss
2 / 2 / 0
Регистрация: 16.09.2010
Сообщений: 71
13.05.2011, 22:16     Работа с классами #1
Подскажите,

создал класс

Код
class Person
{
private:
...	
public:
	static int count;
	void set()
	{
		count++;
	}
};
вопрос: как в процедуре tmain мне взять (обратиться) переменную count ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2011, 22:16     Работа с классами
Посмотрите здесь:

C++ Работа с классами
Работа с классами C++
C++ Работа с классами.
работа с классами C++
C++ Работа с классами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
13.05.2011, 22:17     Работа с классами #2
Person::count.
st_dent
64 / 64 / 3
Регистрация: 05.07.2010
Сообщений: 219
13.05.2011, 22:18     Работа с классами #3
C++
1
Person.count;//кажись
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
13.05.2011, 22:22     Работа с классами #4
Цитата Сообщение от Ma3a Посмотреть сообщение
Person::count.
Кроме того, не забыть ее определить еще.
C++
1
int Person::count = 0;
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
13.05.2011, 22:23     Работа с классами #5
gooseim, присваивание нуля -- лишнее, ведь все static переменные по-умолчанию будут инициализированы нулевым значением.
fen1ksss
2 / 2 / 0
Регистрация: 16.09.2010
Сообщений: 71
13.05.2011, 22:30  [ТС]     Работа с классами #6
Цитата Сообщение от gooseim Посмотреть сообщение
C++
1
int Person::count = 0;
[BCC32 Error] File1.cpp(87): E2089 Identifier 'count' cannot have a type qualifier
fen1ksss
2 / 2 / 0
Регистрация: 16.09.2010
Сообщений: 71
13.05.2011, 22:40  [ТС]     Работа с классами #7
вот программка
Вложения
Тип файла: rar Lab5 защита.rar (4.08 Мб, 23 просмотров)
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
13.05.2011, 23:40     Работа с классами #8
Цитата Сообщение от fen1ksss Посмотреть сообщение
[BCC32 Error] File1.cpp(87): E2089 Identifier 'count' cannot have a type qualifier
В теле класса его надо определить.

C++
1
2
3
4
struct a
{
    static int b = 10;
}
fen1ksss
2 / 2 / 0
Регистрация: 16.09.2010
Сообщений: 71
13.05.2011, 23:57  [ТС]     Работа с классами #9
Что есть b ? моя переменная count должна быть описана именно в public, а использована именно в мэйне
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
13.05.2011, 23:59     Работа с классами #10
Цитата Сообщение от fen1ksss Посмотреть сообщение
это же счетчик, зачем его определять как 10? тем более это статик
Это просто пример, к вопросу об инициализации.
Для обращения к нему нужно использовать оператор ::
C++
1
Person::count = 10;
fen1ksss
2 / 2 / 0
Регистрация: 16.09.2010
Сообщений: 71
14.05.2011, 00:22  [ТС]     Работа с классами #11
Цитата Сообщение от Jtalk Посмотреть сообщение
Это просто пример, к вопросу об инициализации.
Для обращения к нему нужно использовать оператор ::
C++
1
Person::count = 10;
[ILINK32 Error] Error: Unresolved external 'Person::count' referenced from ...\DEBUG\FILE1.OBJ

вот такая ошибка

это если вместо count в мэйне я пишу Person::count
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
14.05.2011, 00:37     Работа с классами #12
Цитата Сообщение от fen1ksss Посмотреть сообщение
[ILINK32 Error] Error: Unresolved external 'Person::count' referenced from ...\DEBUG\FILE1.OBJ

вот такая ошибка

это если вместо count в мэйне я пишу Person::count
C++
1
2
3
4
5
6
7
8
9
10
11
12
struct a
{
    static int b;
}
 
a::b = 10;
 
int 
main()
{
    std::cout<< a::b <<std::endl;
}
Так понятнее?
fen1ksss
2 / 2 / 0
Регистрация: 16.09.2010
Сообщений: 71
14.05.2011, 00:51  [ТС]     Работа с классами #13
Цитата Сообщение от Jtalk Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
struct a
{
    static int b;
}
 
a::b = 10;
 
int 
main()
{
    std::cout<< a::b <<std::endl;
}
Так понятнее?
я так и пишу, у меня

Код
class Person
{
public:
	static int count;
	...
};

int _tmain(int argc, _TCHAR* argv[])

Person::count=0;

и потом использую как Person::count
и именно такая ошибка
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
14.05.2011, 00:55     Работа с классами #14
Цитата Сообщение от fen1ksss Посмотреть сообщение
и именно такая ошибка
Мой косяк - слегка залипаю.
Надо так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
struct a
{
    static int b;
}
 
int a::b = 10;
 
int 
main()
{
    std::cout<< a::b <<std::endl;
}
Обратите внимание на строку между структурой и объявлением main.
fen1ksss
2 / 2 / 0
Регистрация: 16.09.2010
Сообщений: 71
14.05.2011, 11:49  [ТС]     Работа с классами #15
Цитата Сообщение от Jtalk Посмотреть сообщение
Мой косяк - слегка залипаю.
Надо так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
struct a
{
    static int b;
}
 
int a::b = 10;
 
int 
main()
{
    std::cout<< a::b <<std::endl;
}
Обратите внимание на строку между структурой и объявлением main.
если записываю между классом и мэйном
Код
int Person::count=0;
, а потом использую Person::count для обращению к count, программа компилируется, только при 1 вводе выводит абракадабру, а при последующих, все как и должно быть, я так понимаю что то еще нужно описать
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
14.05.2011, 11:52     Работа с классами #16
Цитата Сообщение от fen1ksss Посмотреть сообщение
если записываю между классом и мэйном
Код
int Person::count=0;
, а потом использую Person::count для обращению к count, программа компилируется, только при 1 вводе выводит абракадабру, а при последующих, все как и должно быть, я так понимаю что то еще нужно описать
Покажите этот исправленный код - у меня вышеприведенный пример работает (GCC).
fen1ksss
2 / 2 / 0
Регистрация: 16.09.2010
Сообщений: 71
14.05.2011, 11:52  [ТС]     Работа с классами #17
вот что получается
Вложения
Тип файла: rar Lab5 защита.rar (4.11 Мб, 7 просмотров)
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
14.05.2011, 12:37     Работа с классами #18
Цитата Сообщение от fen1ksss Посмотреть сообщение
вот что получается
C++
1
for (int i=1; i<=Person::count; i++)
Почему вы считаете с единицы? Person::count будет инициализирован нулем, и ни одной итерации цикла не будет.
fen1ksss
2 / 2 / 0
Регистрация: 16.09.2010
Сообщений: 71
14.05.2011, 13:00  [ТС]     Работа с классами #19
Цитата Сообщение от Jtalk Посмотреть сообщение
C++
1
for (int i=1; i<=Person::count; i++)
Почему вы считаете с единицы? Person::count будет инициализирован нулем, и ни одной итерации цикла не будет.
если int Person::count=1; то по идее должен быть 1 проход цикла
C++
1
for (int i=1; i<=Person::count; i++)
, а он выводит 1 абракадабру, а 2 верный
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2011, 13:07     Работа с классами
Еще ссылки по теме:

Работа с классами C++
C++ Работа с классами
Работа с классами C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
14.05.2011, 13:07     Работа с классами #20
Цитата Сообщение от fen1ksss Посмотреть сообщение
если int Person::count=1; то по идее должен быть 1 проход цикла
C++
1
for (int i=1; i<=Person::count; i++)
, а он выводит 1 абракадабру, а 2 верный
Я не нашел в вашем файле ни одной строчке, где Person::count присваивалось бы значение.
Какой пункт конкретно выбираете при выводе "абракадабры" и верного? Там много всего, лень весь switch перебирать.
Yandex
Объявления
14.05.2011, 13:07     Работа с классами
Ответ Создать тему
Опции темы

Текущее время: 13:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru