Firstly, I've got functions like this.
void func1();
void func2();
void func3();
Then I create my typedef for the array:
void (*FP)();
If I write a normal array of function pointers, it should be something like this:
FP array[3] = {&func1, &func2, &func3};
I want to make it a constant array, using const before "FP", but I've got this error messages:
error: cannot convert 'void ( * )()' to 'void ( * const)()' inialization
PD: Sorry my bad English.
EDIT:
x.h
typedef void (*FP)();
class x
{
private:
int number;
void func1();
void func2();
void func3();
static const FP array[3];
}
x.cpp
const FP x::array[3] = {&x::func1, &x::func2, &x::func3};
My code is more large and complex, this is a summary
Then I create my typedef for the array:
void (*FP)();
Did you miss typedef
before void
?
Following works on my compiler.
void func1(){}
void func2(){}
void func3(){}
typedef void (*FP)();
int main()
{
const FP ar[3]= {&func1, &func2, &func3};
}
x.h
class x;
typedef void (x::*FP)(); // you made a mistake here
class x
{
public:
void func1();
void func2();
void func3();
static const FP array[3];
};
without typedef
:
void (*const fp[])() = {
f1,
f2,
f3,
};
typedef void (*FPTR)();
FPTR const fa[] = { f1, f2};
// fa[1] = f2; You get compilation error when uncomment this line.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With