Friend callback функция-член класса C++

237
30 июля 2017, 09:39
class A
{ 
    ...
    protected:
      void someMethod(tPvFrame* pData){  value = 1;  }
    private:
     int value;
     friend void func(tPvFrame* pData);
};
------------------------cpp-file-----------------------
....
void func(someStruct* pData)
{
   A* someClass = (A*)pData->Context[0];
   if(A)
     A->someMethod(pData);
}

Не понимаю до конца как работает этот механизм... Объясните пожалуйста, если кто-то знает.

Answer 1
friend void func(tPvFrame* pData);

Это свободная функция, а не член класса. Самая обычная, просто - в силу friend - имеющая полный доступ ко всем внутренностям класса A, включая те, которые private.

Кстати, что-то не верится, что ваш cpp скомпилируется - friend вне класса смысла не имеет...

READ ALSO
Как начать писать программу на С++?

Как начать писать программу на С++?

Я хочу написать небольшую консольную программу на С++, пара файлов с исходниками и тесты

305
Расчет суммы денег

Расчет суммы денег

Дано задание под номером 7Первые два года рассчитывает правильно, а вот на 10 год получается такой ответ = 10998

301
Ломаю голову, контроль пути

Ломаю голову, контроль пути

Имеется прорисовка пути маршрута автобуса выполненная при помощи массива точек (широта, долгота) которые затем через leaflet прорисовываются...

266
Проблема с конструкторами “no matching function for call to…”

Проблема с конструкторами “no matching function for call to…”

Пишу класс матриц и возникла проблема с конструкторамиВ предпоследней строчке при вызове конструктора, принимающего на вход 3 переменные,...

271