Вы не можете создать экземпляр абстрактного класса.Вы должны извлечь класс из него и переопределить чисто виртуальные методы.Затем вы можете создать экземпляр этого производного класса и использовать созданный экземпляр для инициализации ссылки на абстрактный класс:
class AbstractClass
{
public:
virtual double operator()() = 0;
};
class DerivedClass : public AbstractClass
{
public:
double operator()() override { return 0.0; }
};
class ThisOneContainsIt
{
private:
static DerivedClass d;
static AbstractClass &var;
};
DerivedClass ThisOneContainsIt::d;
AbstractClass &ThisOneContainsIt::var(d);
Хотя я не знаю, почему вы захотите сделать что-то подобное.С таким же успехом вы можете сделать это так:
class ThisOneContainsIt
{
private:
static DerivedClass var;
};
DerivedClass ThisOneContainsIt::var;