К сожалению, в моем реальном классе данные в базовом классе на самом деле представляют собой несколько блоков памяти и множество семафоров для многопоточного доступа. Использование геттеров и сеттеров для семафоров и кусков памяти кажется очень громоздким, поскольку в базе может быть 10-15 переменных.

я есть программа, где мне нужно сделать базовый класс, который разделяется между DLL и некоторый код приложения. Тогда у меня есть два разных производных класса, один в DLL, один в основном приложении. У каждого из них есть некоторые статические функции-члены, которые работают с данными в классе nase. (Они должны быть статическими, поскольку используются в качестве указателей на функции в других местах). В простейшей форме моя проблема показана ниже.

class Base {
protected:
  int var ;
};

class Derived : public Base {
  static bool Process( Base *pBase ) {
    pBase->var = 2;
    return true;
  }
};

Мой компилятор жалуется, что я не могу получить доступ к защищенным членам pBase, даже если Derived имеет защищенный доступ к базе. Есть ли способ обойти это или я что-то неправильно понимаю? Я могу сделать переменные Base общедоступными, но это было бы плохо, поскольку в моем реальном случае это кусок выделенной памяти и семафоры для защиты ее от многопоточности.

Помогите?

Ответы на вопрос(2)

Ваш ответ на вопрос