C++ class wrapper for C struct - Stack Overflow
Wed May 26 2021 19:46:46 GMT+0000 (Coordinated Universal Time)
Saved by
@STS
##c
##wrapper
namespace wrapper {
// Use private inheritance to prevent direct access to the
// members of POINT
class Point : private POINT
{
public:
Point() { }
~Point() { }
// Copy constructor
Point(const ::POINT& p) { x = p.x; y = p.y; }
// Accessor/mutators
void setX(long nx) { x = nx; }
long getX() { return x; }
void setY(long ny) { y = ny; }
long getY() { return y; }
// Allow implicit conversions to POINT* when necessary
// Replaces getStruct()
operator ::POINT*() { return this; }
operator const ::POINT*() const { return this; }
// Copy assignment operators
Point& operator=(const POINT& p)
{
x = p.x;
y = p.y;
return *this;
}
Point& operator=(const Point& p)
{
x = p.x;
y = p.y;
return *this;
}
};
}
extern "C" void someCFunction(POINT *);
int main()
{
POINT cp;
wrapper::Point p;
p.x = 0; // FAIL
p.setX(0); // OK
p = cp; // OK
// No need to call getPoint().
someCFunction(p);
}
content_copyCOPY
Klappt das?!?
https://stackoverflow.com/questions/17454536/c-class-wrapper-for-c-struct
Comments