Задача заключается в том, что бы в private надо создать статическую переменную символьного типа, в protected просто переменные вещественного типа, в public массив указателей на функции-члены класса.
#include <iostream>
using namespace std;
class A {
private:
static char x;
protected:
char q = 1;
char w = 2;
char e = 3;
public:
void func1(void){
cout<<"func 1"<<endl;
};
void func2(void){
cout<<"func 2"<<endl;
};
void (*func[])(void) = {func1, func2};
};
int main() {
A ob;
for(int i=0; i < sizeof(ob.func); i++)
{
ob.func[i]();
}
return 0;
}
Вот ошибки:
19 39 C:\Users\User\Desktop\Ìåðñîâ\laBa.cpp [Error] too many initializers for 'void (* [0])()'
19 39 C:\Users\User\Desktop\Ìåðñîâ\laBa.cpp [Error] cannot convert 'A::func1' from type 'void (A::)()' to type 'void (*)()'
19 39 C:\Users\User\Desktop\Ìåðñîâ\laBa.cpp [Error] cannot convert 'A::func2' from type 'void (A::)()' to type 'void (*)()'
C++ не поддерживает синтаксис с неявным определением размера массива при объявлении члена класса с in-class инициализатором. Размер массива надо указывать явно.
Указатель на функцию-член класса имеет тип ReturnType (ClassType::*)(ParameterTypes), а у вас объявлены указатели на обычные функции.
Формирование указателя на функцию-член класса всегда требует явного использования оператора & и указания квалифицированного имени функции.
void (A::*func[2])(void) = { &A::func1, &A::func2 };
Синтаксис вызова функции через указатель также неверен. В данном случае это будет
(ob.*ob.func[i])();
Почему цикл по i вдруг итерирует до sizeof(ob.func)???
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости