Задача заключается в том, что бы в 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)
???
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте, уважаемое сообществоСтолкнулся с ситуацией, требующей Вашего пояснения
Нужно замерить время работы программы, используются объекты класса
Задача: Генерирование всех k-элементных подмножеств множества {1,
Давая ответ на заданный кодом вопрос пользователь не должен беспокоиться о регистре