Точка 1: В C ++ нельзя вызывать нестатическую функцию-член внутри статической функции-члена . Причина в том, что в статической функции нет указателя "this" . Конструкторы не являются исключением .
class A
{
public:
void fun(){};
static void static_fun()
{
// This is illegal because fun() is non-static
fun();
}
};
Пункт 2: Вы всегда можете вызывать методы другого объекта, даже если он нестатический !
class A
{
public:
void fun(){};
static void static_fun(A& a)
{
// Legal here because it's a (different) object..
a.fun();
}
};
Заключение
Это не имеет ничего общего с конструктором в вашем коде. Потому что вы создаете другой объект. Вы можете вызывать все его открытые методы, включая его конструктор.