0 / 0 / 1
Регистрация: 04.08.2016
Сообщений: 96
1

Статическое поле класса: подсчет количества созданных объектов

03.09.2017, 22:48. Показов 4907. Ответов 3

Задание:
Дополнить один из классов статическим полем, которое будет считать количество созданных объектов.

Реализация:
Объявление переменной в классе:
C++
1
2
public:
    static int countW;
В конструкторе это выглядит так:
C++
1
2
3
4
Worker::Worker() {
    countW++;
    set();
}
в главном файле и собственно в main():
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int Worker::countW;
 
 int main()
{
 
    std::cout << "Первый работник\n";
    Worker a;
    std::cout << "Второй работник\n";
    Worker b;
    std::cout << "Третий работник\n";
    Worker c;
    
    std::cout << "\nВывод информации\n";
    a.get();
    b.get();
    c.get();
 
    
    std::cout << "Count=" << Worker::countW;
 
    return 0;
}
Ошибка:

LNK2005 переменная уже определена.
ЧТо я не так поняла в работе со статической переменной? Как исправить?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.09.2017, 22:48
Ответы с готовыми решениями:

Подсчет созданных объектов пользовательского класса
Создать класс SIGMOID таким образом, чтобы при уничтожении последнего объекта на экран выдавалось...

Реализовать подсчет количества объектов класса, используя статическую переменную-член класса
как реализовать подсчет количества объектов класса (используя статическую переменную-член класса),...

Только константное статическое поле НЕ МОЖЕТ быть поле членом класса !
class CCoords { static const float rate = 1.0f; // ОШИБКА !!! bool IsComputed; ...

Статическое поле класса, имеющее тип того же класса
Всем доброго времени суток. Как известно, поля класса могут быть ссылками, либо указателями на тот...

3
16476 / 8974 / 2200
Регистрация: 30.01.2014
Сообщений: 15,588
03.09.2017, 23:52 2
Лучший ответ Сообщение было отмечено kindertei как решение

Решение

Цитата Сообщение от kindertei Посмотреть сообщение
LNK2005 переменная уже определена.
Похоже, что какую-то важную часть кода ты нам не показываешь.
Потому что в приведенном фрагменте не видно ошибки.

Добавлено через 4 минуты
Цитата Сообщение от kindertei Посмотреть сообщение
C++
1
int Worker::countW;
Если подключить телепатию, то возможно окажется, что данная строка есть еще в каком-то файле, а ты ее попросту не заметила. Проверь
И линковщик обычно указывает в каком из объектных файлов обнаружено повторное определение. Это тоже стоит проверить.
0
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
03.09.2017, 23:54 3
Лучший ответ Сообщение было отмечено kindertei как решение

Решение

kindertei, покажите полностью коды всех файлов.

Добавлено через 53 секунды
Цитата Сообщение от DrOffset Посмотреть сообщение
возможно окажется, что данная строка есть еще в каком-то файле
Почему-то тоже так думаю.
0
0 / 0 / 1
Регистрация: 04.08.2016
Сообщений: 96
04.09.2017, 00:56  [ТС] 4
Спасибо, Проблема оказалась в том, что есть глвный файл с main(), который вызывает main1()...mainN() из других файлов.Так вот думала, что нужно было объявлять
C++
1
int Worker::countW;
перед main5(), когда нужно было это делать перед основным main().
Еще раз всем спасибо)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.09.2017, 00:56
Помогаю со студенческими работами здесь

Статическое поле абстрактного класса в как наследуемое поле и преведение его типа
public abstract class BaseManager : BaseClass { public static BaseManager Instance {...

Статическое поле класса
Господа, подскажите пожалуйста. Если в некотором классе есть статическое поле, например public...

Статическое поле класса
Если у меня есть класс Book и в нем объявлено какое то поле private static. И есть внутренний класс...

Статическое поле из производного класса
Есть три класса public class Птицы { public static Int32 ДлинаКрыльев; } public class Орлы...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru