dllといくつかのアプリケーションコードの間で共有される基本クラスを作成する必要があるプログラムがあります。次に、2つの異なる派生クラスがあります。1つはdllにあり、もう1つはメインアプリケーションにあります。これらのそれぞれには、naseクラスのデータを操作するいくつかの静的メンバー関数があります。(他の場所で関数ポインターとして使用されるように、静的である必要があります)。最も単純な形で、私の問題を以下に示します。
class Base {
protected:
int var ;
};
class Derived : public Base {
static bool Process( Base *pBase ) {
pBase->var = 2;
return true;
}
};
私のコンパイラは、DerivedがBaseへのアクセスを保護していても、pBaseの保護されたメンバーにアクセスできないと文句を言います。これを回避する方法はありますか、それとも私は何かを誤解していますか?Base変数をパブリックにすることはできますが、実際のインスタンスでは、これらは割り当てられたメモリの塊であり、マルチスレッドから保護するためのセマフォであるため、これは悪いことです。
ヘルプ?