Зачем полям в базовом классе быть private? Сделайте их protected и пользуейтесь в наследниках. А ещё лучше, сделайте в базовом классе конструктор с параметрами.
Вирутальных конструкторов в C++ нет, но есть один паттерн, поищите какой.
class Foo
{
public:
Foo(int a1, int a2)
: m_a1(a1)
, m_a2(a2)
{}
protected: // Если необходим доступ в потомках, в остальных случаях private
int m_a1;
int m_a2;
};
class Bar : public Foo
{
public:
Bar(int a1, int a2)
: Foo(a1, a2)
{}
};
PS
Пользуйтесь #pragma once, деструктор в базовом классе должен быть виртуальным (не всегда... но пока просто делайте всегда), не смешивайте стили, не пишите имена транслитом.