Я пишу класс, который обернут в namespace
с именем cs
. Я использую библиотеку, одна из функций которой занимает function pointer
. Функция должна модифицировать некоторые из защищенных членов класса, поэтому я написал свободную функцию в том же пространстве имен cs
и сделал ее friend function
класса. Это позволило клиентам использовать эту функцию. Но функция ДОЛЖНА быть недоступна для клиента по очевидным причинам.
Пример кода здесь:
#include "lib.h"
namespace cs{
class A
{
protected:
int x;
float y;
friend int myFunc(void* userdata, int valInt, float valFloat);
public:
void abc()
{
libFunc(this, myFunc);
}
};
void myFunc(void *userdata, int x, float y){
// I would like this function to be inaccessible from the client
A *obj = (A*) userdata;
obj->x = x;
obj->y = y;
}
}