При попытке скомпилировать проект возникает ошибка
Error C2259 'IMilitaryMan': cannot instantiate abstract class Task12.Tests
#include "pch.h"
#include <stack>
using std::stack;
class IMilitaryMan
{
public:
void virtual Serve() = 0;
virtual ~IMilitaryMan();
};
class Soldier : public IMilitaryMan
{
private:
int jobCount;
public:
Soldier() { this->jobCount = 0; }
void Serve() override { this->jobCount++; }
};
class Officer : public IMilitaryMan
{
private:
int countSubordinates = 0;
int jobCountSended = 0;
stack <IMilitaryMan> Subordinates;
public:
Officer(IMilitaryMan* Subordinates, int countSubordinates)
{
this->countSubordinates = countSubordinates;
for (size_t i = 0; i < countSubordinates; i++)
this->Subordinates.push(Subordinates[i]);
}
void Serve() override
{
stack<IMilitaryMan> serves;
for (size_t i = 0; i < countSubordinates; i++)
{
Subordinates.top().Serve();
serves.push(Subordinates.top());
Subordinates.pop();
}
Subordinates = serves;
jobCountSended++;
}
~Officer()
{
for (size_t i = 0; i < jobCountSended; i++)
for (size_t j = 0; j < countSubordinates; j++)
Subordinates.top().~IMilitaryMan();
}
};
int main()
{
Soldier test;
IMilitaryMan& militaryMan = test;
militaryMan.Serve();
return 0;
}
Вы же используете
stack <IMilitaryMan> Subordinates;
Понятно, что в стеке вы пытаетесь работать именно с IMilitaryMan
.
Переделайте на
stack <IMilitaryMan*> Subordinates;
соответствующим образом изменив весь код.
Кстати, даже если бы у вас все сработало - вы би имели неприятности со срезкой.
И еще - вот зачем у вас это?
Subordinates.top().~IMilitaryMan();
При вашем варианте - хранить не указатели, а объекты - оно явно излишнее.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Я хочу отдельный вывод в программе выделить с помощью цветовНо при использовании таких вариантов как например:
Есть ли в линукс какое нибудь оповещение, когда подключаешься к сети? Это для программированияЯ хочу отслеживать интерфейс например, но не знаю...
Считываю текстовый файл, обрабатываю его и записываю в другой файлНо работает это медленно