静的メンバーのスコープを特定のクラスに制限する方法は? たとえば、クラス A の a1 オブジェクトとクラス A の a2 オブジェクトを作成する場合、これらのオブジェクト (A で作成された a1、a2) は静的メンバーに対して異なる値を持つことができますが、対応する派生クラスに対しては同じです。
class A{
public:
A(int member){
A::mMember=member;}
void set(int member){
A::mMember=member;}
int get(){
return A::mMember;}
protected:
static int mMember;
};
int A::mMember;
class B:public A{
public:
B(int member):A(member){};
};
class C:public A{
C(int member):A(member){};
};
int main()
{
A * a1= new A(1);
std::cout<<"a1: "<< a1->get()<<std::endl;
B * b1= new B(2);
std::cout<<"a1: "<< a1->get()<<std::endl;
// How to make a1 continue be a1=2 and a2 = 5. I mean how to limit a static member
//to only its derivated class
A * a2 = new A(5);
std::cout<<"a1: "<< a1->get()<<std::endl;
std::cout<<"a2: "<< a2->get()<<std::endl;
}