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