Вопрос не требует никаких объяснений, я думаю. Я действительно не знаю, что я делаю неправильно. Я сделал это раньше, и он работал нормально. Я все еще новичок.Подсчет созданных объектов класса
#include <iostream>
#include <vector>
class Employee
{
private:
static int counter;
public:
Employee::Employee()
{
counter++;
}
Employee::~Employee()
{
counter--;
}
static int ShowCounter()
{
//std::cout << counter << std::endl;
return counter;
}
};
int Employee::counter = 0;
int main()
{
std::vector<Employee> employees;
std::cout << "Constructors: " << std::endl;
employees.push_back(Employee());
std::cout << Employee::ShowCounter() << std::endl;
employees.push_back(Employee());
std::cout << Employee::ShowCounter() << std::endl;
employees.push_back(Employee());
std::cout << Employee::ShowCounter() << std::endl;
std::cout << "Destructors: " << std::endl;
employees.pop_back();
std::cout << Employee::ShowCounter() << std::endl;
employees.pop_back();
std::cout << Employee::ShowCounter() << std::endl;
employees.pop_back();
std::cout << Employee::ShowCounter() << std::endl;
std::cout << std::endl;
system("pause");
}
Выход:
Constructors:
0
-1
-3
Destructors:
-4
-5
-6
я, вероятно, сделал какой-то глупая ошибка
EDIT: Я боюсь, что это против правил, но у меня есть следующий вопрос, связанный с предыдущим. Я вставил минимальный код, который должен был показать мою проблему. Теперь, когда я пытаюсь реализовать свое решение в своем основном коде, я получаю ошибку 'Employee &Employee::operator =(const Employee &)': attempting to reference a deleted function'
. Линия с вопросом:
employees[employees.size() - 1] = generate_random_employee(employees[employees.size() - 1], employees);
Функция generate_random_employee
является Employee
функция типа. Если вам нужно больше деталей, я задам новый вопрос.
Вы не считаете экземпляры, созданные из конструкторов копирования. –