I have class named cTPS, there are 3 member functions called matrixP_2, matrixP_3 and matrixP_4 for calculating matrixP in three different ways.

In constructor of this class I want to initialize a pointer declared in cTPS.h like this:

cMatrixBase *(cTPS::*matrixP)(void) //pointer MatrixP returning object cMatrixBase

I initialize it for example like this in constructor:

matrixP = &cTPS::matrixP_3 //pointer matrixP should point to member function matrixP_3

Up to this point everything is OK, no compiler errors.

And now, where's the probem: In the main.cpp I call function matrixP_3 via pointer matrixP in this line:

ComputedMatrixP->assign( (void *)TPSCalculation.matrixP)

Object ComputedMatrixP is object of class cMatrixBase and via it's 'assing' function I assign to it object, which is returned by called matrixP_3 function (via it's pointer matrixP).

On this line I get this error:

'type cast' : cannot convert from 'cMatrixBase *(__thiscall cTPS::* )(void)' to 'void *'

I think, it's something connected with 'assign' function of class cMatrixBase, this function looks like this:

void cMatrixBase::assign(void *assigned_matrix)
(*matrix) = *((static_cast<cMatrixNewmat *>(assigned_matrix))->matrix);

If someone could help me, I would really appreciate it :)

Pointers to member functions and pointers to void are not compatible types. Figure out another solution that doesn't require this conversion.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, learning, and sharing knowledge.