У меня есть программа, в которой мне нужно создать базовый класс, который используется совместно с 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. Есть ли способ обойти это или я что-то не понимаю? Я могу сделать базовые переменные общедоступными, но это было бы плохо, поскольку в моем реальном примере это кусок выделенной памяти и семафоров, чтобы защитить ее для многопоточности.
Справка