Если ваш компилятор поддерживает списки инициализаторов C ++ 11, то вам просто нужно отбросить размеры ложных массивов в вашем назначении.
A::A()
{
function_array = { { func1, func2}, { func3, func4 } };
}
Или, что еще лучше, инициализируйте его напрямую, а не присваивайте после инициализации по умолчанию:
A::A() : function_array { { func1, func2}, { func3, func4 } }
{}
Если ваш компилятор не поддерживает C ++ 11, вам необходимо назначить их вручную:
A::A()
{
function_array[0][0] = func1;
function_array[0][1] = func2;
function_array[1][0] = func3;
function_array[1][1] = func4;
}
Вам также понадобится сделать функции static
, чтобы хранить простые указатели на них; если они должны быть нестатическими членами, то вам нужно либо хранить указатели на функции-члены и вызывать их с экземпляром класса, либо хранить std::function
объекты, созданные с использованием std::bind
(или их Boost-эквиваленты, если вы не C ++ 11).