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

Cтатическая переменная - C++

Восстановить пароль Регистрация
 
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
09.07.2011, 08:11     Cтатическая переменная #1
Подскажите пожалуйста почему в данном примере статическая переменная

C++
1
с
не работает.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<iostream>
using namespace std;
class a
{private:
 int b;
 static int c;
public:
a()
{c++;}
    a (int b1):b(b1)
    {}
    void fc()
   { cout<<"Мой порядковый номер - "<<b<<endl;
    cout<<"Всего объектов - "<<c<<endl<<endl;}
};
int a ::c=0;
int main ()
{setlocale(LC_ALL,"Rus");
a a1(1),a2(2),a3(3);
a1.fc();
a2.fc();
a3.fc();
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2011, 08:11     Cтатическая переменная
Посмотрите здесь:

C++ переменная
C++ Переменная
C++ Булевская переменная
Переменная-счетчик C++
C++ Глобальная переменная
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dmitry_gdv
 Аватар для Dmitry_gdv
64 / 64 / 5
Регистрация: 18.03.2010
Сообщений: 351
09.07.2011, 09:36     Cтатическая переменная #2
Всё там должно работать - просто для изменения переменной "c" вам необходимо вызывать конструктор без параметров

C++
1
a a1, a2, a3;
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
09.07.2011, 09:59  [ТС]     Cтатическая переменная #3
Не могли бы вы это в коде показать? я вызываю, но ошибок еще больше становится.
nameless
Эксперт C++
 Аватар для nameless
289 / 288 / 14
Регистрация: 16.06.2009
Сообщений: 486
09.07.2011, 10:04     Cтатическая переменная #4
parkito,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
class A
{
public:
   static int a;
   A() { a++; }
};
 
int A::a;
 
int main()
{
   A a1, a2, a3;
   
   std::cout << A::a << std::endl; // выведет 3;
 
   return 0;
}
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
09.07.2011, 10:42  [ТС]     Cтатическая переменная #5
Цитата Сообщение от nameless Посмотреть сообщение
parkito,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
class A
{
public:
   static int a;
   A() { a++; }
};
 
int A::a;
 
int main()
{
   A a1, a2, a3;
   
   std::cout << A::a << std::endl; // выведет 3;
 
   return 0;
}
Я имею понятие как выводить статическое значение. Мне не понятно почему в моем случае эта переменная не работает. Не могли бы вы интегрировать исправления в мой код?
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
09.07.2011, 10:49     Cтатическая переменная #6
Замените 11 строку в вашем коде на
C++
1
{c++;}
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
09.07.2011, 20:53  [ТС]     Cтатическая переменная #7
Цитата Сообщение от Net_Wanderer Посмотреть сообщение
Замените 11 строку в вашем коде на
C++
1
{c++;}

Спасибо. А не подскажите почему мой вариант не был трудоспособным ??
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2011, 21:20     Cтатическая переменная
Еще ссылки по теме:

C++ Глобальная переменная определена в хидере. Компилятор ругается на то, что переменная переопределена несколько раз
C++ Неинициализированная переменная
C++ Междупроектная переменная

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

Или воспользуйтесь поиском по форуму:
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
09.07.2011, 21:20     Cтатическая переменная #8
Цитата Сообщение от parkito Посмотреть сообщение
Спасибо. А не подскажите почему мой вариант не был трудоспособным ??
У вас есть два конструктора, и только в дефолтном есть cnt++;
когда вы пишете
C++
1
a1(1)
то вызывается конструктор с параметром(т. е. не дефолтный), в котором инкримента cnt нет.
Yandex
Объявления
09.07.2011, 21:20     Cтатическая переменная
Ответ Создать тему
Опции темы

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