Reputation: 587
LASReader.h
class LASReader
{
public:
LASReader();
~LASReader();
Point3 (LASReader::*GetPoint)();
private:
Point3 GetPointF0();
Point3 GetPointF1();
Point3 GetPointF2();
Point3 GetPointF3();
Point3 GetPointF4();
Point3 GetPointF5();
};
LASReader.cpp
switch (m_header.PointDataFormat)
{
case 0:
m_formatSize = sizeof(LASPOINTF0);
GetPoint = &LASReader::GetPointF0;
break;
case 1:
m_formatSize = sizeof(LASPOINTF1);
GetPoint = &LASReader::GetPointF1;
break;
case 2:
m_formatSize = sizeof(LASPOINTF2);
GetPoint = &LASReader::GetPointF2;
break;
case 3:
m_formatSize = sizeof(LASPOINTF3);
GetPoint = &LASReader::GetPointF3;
break;
case 4:
m_formatSize = sizeof(LASPOINTF4);
GetPoint = &LASReader::GetPointF4;
break;
case 5:
m_formatSize = sizeof(LASPOINTF5);
GetPoint = &LASReader::GetPointF5;
break;
default:
break; // Unknown Point Data Format
}
main.cpp
Point3 p = reader->GetPoint;
"Error C2440: 'initializing' : cannot convert from 'Point3 (__cdecl LASReader::* )(void)' to 'Point3'"
When I use bracelets
Point3 p = reader->GetPoint();
"Error C2064: term does not evaluate to a function taking 0 arguments"
What am I doing wrong?
Upvotes: 1
Views: 187
Reputation: 1145
You need to use (reader->*reader->GetPoint)()
to call it. See How to invoke pointer to member function when it's a class data member?
Upvotes: 2
Reputation: 1552
Function pointer syntax goes as follows
returnType (*yourFuncName)(argumentTypes);
so you'll need to redefine your member to something like this
Point3 (*getPointFunc)(void);
Upvotes: -1