如何将静态成员的范围限制为n个特定类?例如,如果我创建类A的a1对象和类A的a2对象,我希望这些对象(用A创建的a1,a2)对于它们的静态成员可以具有不同的值,但对于它们的相应派生类也是如此。将静态成员的范围限制为n个特定类
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;
}
请写一个正确的问题。不要把整个问题放在一大堆代码中的单个评论中。 – 2013-04-09 15:57:39
为什么你不使用非静态成员变量? – 2013-04-09 16:08:42
我在基类中有一个映射成员,当构造派生类时,派生类将相同的ID分配给映射,因为它继承该成员。 – user1310873 2013-04-09 16:13:13